mongodb:返回一组文档ID

st-*_*t-h 5 mongodb mongodb-query

是否可以查询mongodb以返回匹配文档id值的数组,而无需相关的键?

请考虑遵循"父"数据结构:

{
  "_id": ObjectId("52448e4697fb2b775cb5c3a7"),
  "name": "Peter",
  "children": [
    {
      "name": "joe"
    }
  ]
},
{
  "_id": ObjectId("52448e4697fb2b775cb5c3b6"),
  "name": "Marry",
  "children": [
    {
      "name": "joe"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想查询一个父_id数组,其子名称为"joe"

对于提供的示例数据,我想从mongo返回以下输出:

[ObjectId("52448e4697fb2b775cb5c3a7"), ObjectId("52448e4697fb2b775cb5c3b6")]
Run Code Online (Sandbox Code Playgroud)

我知道我可以查询这样的输出,它也包含键

[{"_id": ObjectId("52448e4697fb2b775cb5c3a7")}, {"_id": ObjectId("52448e4697fb2b775cb5c3b6")}]
Run Code Online (Sandbox Code Playgroud)

但是,我需要使用如下更新操作将上面的数组推送到另一个文档:

db.statistic.update({"date": today}, {$push: {"children": [ObjectId("52448e4697fb2b775cb5c3a7"), ObjectId("52448e4697fb2b775cb5c3b6")]}}, true, false)
Run Code Online (Sandbox Code Playgroud)

我想避免整理文档结构,以防可以使用mongo返回包含适当值的数组

vik*_*tnk 16

它应该是可能的

db.coll.distinct("_id", {"children.name": "joe"})
Run Code Online (Sandbox Code Playgroud)