我有这样的文档结构
{
"storeId":"WES-1234",
"items":{
"PA-001":{
"name":"Cheetos Flamin' Hot",
"qty":5,
"inbound":7
},
"QX-7785":{
"name":"Kraft Handi Snack",
"qty":7,
"inbound":0
}
}
}
现在,我要搜索的是items
包含“ Nabisco”的name
。我该怎么做呢?众所周知,items
是地图,而不是列表。
Mongo是2.6版
所以,在馆藏中,文档结构是这样的,我想知道哪些商店至少有3个Nabiscos或4个Cheetos,等等
PA-001和QX-7785是商品代码,它们是动态生成的,因此它们的值不固定或无法提前知道
是否可以查询此结构? javascript很好,只要能实现我需要的查询即可。
谢谢
答案 0 :(得分:1)
在mongo控制台中,我的mongo数据库版本为v4.0.0:
db.test.find({"items.PA-001.name": /Nabisco/})
如果它不起作用,请告诉我。
答案 1 :(得分:1)
@sprintone,将您的文档结构更改为以下内容:
{
"storeId":"WES-1234",
"items":[{
"reference": "PA-001",
"name": "Cheetos Flamin' Hot",
"qty":5,
"inbound":7
}, ...]
}
这样,您将能够执行Array的特定查询($ elemMatch ...),而且还可以将引用用作“ foreignKey”来执行查找。这样会更加灵活!