让我们把我的文件在集合看起来像这样的波纹管
{
"data": [
{
"MainId": 1111,
"firstName": "Sherlock",
"lastName": "Homes",
"categories": [
{
"CategoryID": 1,
"CategoryName": "Example"
}
]
},
{
"MainId": 122,
"firstName": "James",
"lastName": "Watson",
"categories": [
{
"CategoryID": 2,
"CategoryName": "Example2"
}
]
}
],
"messages": [], // blank json
"success": true // boolean value
}
字符串
所以我需要搜索关键字是否存在CategoryID
在文档中或没有,这只是一个例子,我的搜索关键字可以是任何东西,可以嵌套到任何级别
找到密钥是否存在的更好和最优的方法是什么?Note: each document structure might vary so need to find whether the key is present in the whole collection or not
个
我可以遍历集合中的所有文档,并递归地深入到内部来检查密钥的存在,但这是蛮力解决方案,我如何优化它?
我需要的是:
- MongoDb聚合查询(如果存在)
- 或者用其他更好的最佳方式来做
1条答案
按热度按时间wnavrhmk1#
您可以添加
presentKeys
数组字段,并将您在文档中设置的所有键都推到它。下面是给定示例的外观:
字符串
然后索引该字段以避免完整集合扫描:
型
现在,您可以通过以下方式查询包含某个键的文档:
型