我在 mongodb 中有接下来的 3 个文档:
文件1:
{
"name": "device1",
"camera": {
"number": 3
}
}
文件2:
{
"name": "device2",
"camera": {
"number": 1
}
}
文件3:
{
"name": "device3",
"wifi": {
"number": 2
}
}
我的目标是找到模块编号> 1的所有设备,该模块可能camera
, wifi
或其他。
我知道我可以使用 next 来获取设备:
> db.devices.find({"camera.number":{$gt:1}})
{ "_id" : ObjectId("5f436a3df716cb47d319245e"), "name" : "device1", "camera" : { "number" : 3 } }
> db.devices.find({"wifi.number":{$gt:1}})
{ "_id" : ObjectId("5f436a58f716cb47d3192460"), "name" : "device3", "wifi" : { "number" : 2 } }
但看起来我必须在查询中添加类似“module.number”的内容,你知道也许我有很多模块,然后使用效率不高camera.number
, wifi.number
& othermodule.number
查找所有匹配的设备。如果可能的话,我可以有一些魔法来直接获取“有任何模块编号> 1”的设备,我的意思是不需要指定父字段?
很简单,只需更改您的架构即可。
https://mongoplayground.net/p/npSvVzbnsyk https://mongoplayground.net/p/npSvVzbnsyk
{
"name": "device1",
"modules": [
{
"k": "camera",
"v": 3
}
]
},
{
"name": "device2",
"modules": [
{
"k": "wifi",
"v": 3
},
{
"k": "camera",
"v": 2
}
]
},
{
"name": "device3",
"modules": [
{
"k": "wifi",
"v": 2
}
]
}
db.collection.find({"modules.v": 3})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)