Mongodb 查询和构建对象字典的索引
MongoDB版本:3.6 我们有以下结构Mongodb 查询和构建对象字典的索引,mongodb,mongodb-query,Mongodb,Mongodb Query,MongoDB版本:3.6 我们有以下结构 { ... “飞机”:{ “TAIL_1”:{ “注册”:“TAIL_1”, “wifi”是真的, ... }, “TAIL_2”:{ “注册”:“TAIL_2”, “wifi”错误 ... } ... } } 如何查询将wifi设置为true/false的飞机的所有文档 如何构建索引以加速此类查询 看起来,如果相反,它会更容易,但我想知道我可以用这样的对象做什么。谢谢您可以使用: db.getCollection().find({ $where:f
{
...
“飞机”:{
“TAIL_1”:{
“注册”:“TAIL_1”,
“wifi”是真的,
...
},
“TAIL_2”:{
“注册”:“TAIL_2”,
“wifi”错误
...
}
...
}
}
db.getCollection().find({
$where:function(){
用于(目标飞机中的var键){
如果(obj.aircraft[key].wifi==true){
返回真值
}
}
}
}).forEach(结果=>{
打印(结果)
})
需要注意的一点是,$where
执行全表扫描,这可能会影响性能
对于索引/未来查询,我认为您使用数组的想法更简单。或者,您可能希望将文档扁平化为每个“尾部”1个文档,您可以使用
$group
来恢复聚合管道中与原始文档相似的结构。是的,谢谢。我们最终重构并使用了一个数组
db.getCollection(<collection name>).find({
$where: function(){
for(var key in obj.aircraft){
if(obj.aircraft[key].wifi == true){
return true
}
}
}
}).forEach(result => {
print(result)
})