查询节点的所有子体

  • 本文关键字:节点 查询 mongodb
  • 更新时间 :
  • 英文 :


给定一个MongoDb文档集合,该文档具有一个属性"myContacts";像这样:

{
"_id": 123,
"myContacts" : {            
"contacts" : {
"10" : {
"_id" : NumberLong(10),
"name" : "c1",
"prop" : true
},
"20" : {
"_id" : NumberLong(20),
"name" : "c2"
},
}
}
}

我想选择所有文档,其中至少有一个联系人缺少"联系人";道具";领域我找到了一个通用的查询:

db.getCollection('xyz').find({ 'myContacts.contacts.???.prop': { $exists: false } })

问题是联系人的ID是路径的一部分,我无法提前了解他们。我想要类似'myContacts.contacts.$anyChild.prop'的东西,但在mongo文档中找不到类似的东西。

这是否意味着没有办法做到这一点?

附言:我无法更改文档结构,实时应用程序会使用它。我在谷歌呆了一段时间,我打赌这是不可能的。然而,我想听听有Mongo经验的人的意见。

感谢大家的宝贵意见,这让我开始行动!我可以得到我想要的结果:

db.getCollection('xyz').aggregate([{$project: {_id:1, contacts:{$objectToArray: "$myContacts.contacts"}}}, {$match: {"contacts.v.prop" : null}}])

最新更新