我有一个相当大的集合,其中几个文档将共享相同的组ID。我想提取所有唯一的组ID,其中该组中的FIRST文档是组ID的表示。
db.INTUSERADDR.distinct("groupId")
将收集所有唯一身份证件就好了。结果如下:
[
ObjectId("596641671f8f9c10b02f8c6c"),
ObjectId("596641681f8f9c10b02f8c97"),
ObjectId("5966416a1f8f9c10b02f8e78"),
ObjectId("5966416a1f8f9c10b02f8e99"),
ObjectId("5966416a1f8f9c10b02f8e9f"),
ObjectId("5966416a1f8f9c10b02f8eae"),
ObjectId("5966416b1f8f9c10b02f8ee8")
]
没有进行额外的查询,我所看到的只是ID。所以如果我的数据集看起来像这样:
{
"user":"bob sagget",
"badge":0,
"groupId":ObjectId("596641671f8f9c10b02f8c6c")
},
{
"user":"tourettes guy",
"badge":0,
"groupId":ObjectId("596641671f8f9c10b02f8c6c")
},
{
"user":"joe smoe",
"badge":0,
"groupId":ObjectId("596641681f8f9c10b02f8c97")
},
{
"user":"rick astley",
"badge":0,
"groupId":ObjectId("596641681f8f9c10b02f8c97")
}
我希望我的查询返回在该组中找到的第一个文档,bob sagget和组ID。
这样的事情:
{
[
"user":"bob sagget",
"groupId":ObjectId("596641671f8f9c10b02f8c6c")
],
[
"user":"joe smoe",
"groupId":ObjectId("596641681f8f9c10b02f8c97")
],
....and so on
}