MongoDB:不同的元组
MongoDB: distinct tuples
假设有一个 MongoDB 文档的集合,其结构如下:
{
id_str: "some_value",
text: "some_text",
some_field: "some_other_value"
}
我想过滤此类文档以获得具有不同文本值的文档。
我从 MongoDB 文档中了解到如何使用 distinct
操作从集合中提取唯一字段值。因此,通过执行以下查询:
db.myCollection.distinct("text")
我将获得一个包含不同文本值的数组:
["first_distinct_text", "second_distinct_text",...]
然而,这不是我想要得到的结果。相反,我想要以下内容:
{ "id_str": "a_sample_of_id_having_first_distinct_text",
"text": "first_distinct_text"}
{ "id_str": "a_sample_of_id_having_second_distinct_text",
"text": "second_distinct_text"}
我不确定这是否可以通过单个查询完成。
我找到了一个 similar question,但是它并没有完全解决我的问题。
你有什么解决这个问题的提示吗?
谢谢。
您应该考虑使用 $group
阶段制作一个 aggregate query,并可能使用 $first
运算符。
可能类似于:
db.myCollection.aggregate([{ $group : { _id : { text: "$text"},
text: { $first: "$id_str" }
}
}])
尝试:
db.myCollection.aggregate({$group: {_id: {'text': "$text", 'id_str': '$id_str'}}})
这里有更多信息:http://docs.mongodb.org/manual/reference/method/db.collection.aggregate/
假设有一个 MongoDB 文档的集合,其结构如下:
{
id_str: "some_value",
text: "some_text",
some_field: "some_other_value"
}
我想过滤此类文档以获得具有不同文本值的文档。
我从 MongoDB 文档中了解到如何使用 distinct
操作从集合中提取唯一字段值。因此,通过执行以下查询:
db.myCollection.distinct("text")
我将获得一个包含不同文本值的数组:
["first_distinct_text", "second_distinct_text",...]
然而,这不是我想要得到的结果。相反,我想要以下内容:
{ "id_str": "a_sample_of_id_having_first_distinct_text",
"text": "first_distinct_text"}
{ "id_str": "a_sample_of_id_having_second_distinct_text",
"text": "second_distinct_text"}
我不确定这是否可以通过单个查询完成。
我找到了一个 similar question,但是它并没有完全解决我的问题。
你有什么解决这个问题的提示吗?
谢谢。
您应该考虑使用 $group
阶段制作一个 aggregate query,并可能使用 $first
运算符。
可能类似于:
db.myCollection.aggregate([{ $group : { _id : { text: "$text"},
text: { $first: "$id_str" }
}
}])
尝试:
db.myCollection.aggregate({$group: {_id: {'text': "$text", 'id_str': '$id_str'}}})
这里有更多信息:http://docs.mongodb.org/manual/reference/method/db.collection.aggregate/