在mongodb中查找密钥未知的时间
我有一个这样的文档结构在mongodb中查找密钥未知的时间,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个这样的文档结构 { "storeId":"WES-1234", "items":{ "PA-001":{ "name":"Cheetos Flamin' Hot", "qty":5, "inbound":7 }, "QX-7785":{ "name":"Kraft Handi Snack", "qty":7, "inb
{
"storeId":"WES-1234",
"items":{
"PA-001":{
"name":"Cheetos Flamin' Hot",
"qty":5,
"inbound":7
},
"QX-7785":{
"name":"Kraft Handi Snack",
"qty":7,
"inbound":0
}
}
}
现在,我要做的是搜索项目
,其名称
包含“Nabisco”。我该怎么做?正如大家所看到的,项目
是一个地图,而不是列表。
Mongo是2.6版
因此,在集合中,文档结构是这样的,我想知道哪些商店至少有3个Nabiscos或4个Cheetos,等等
PA-001和QX-7785是项目代码,它们是动态生成的,因此,它们的值不是固定的,也不是预先知道的
有没有办法查询这个结构?javascript很好,只要它能够实现我需要的查询
谢谢我的mongo db版本是v4.0.0,在mongo控制台中:
db.test.find({"items.PA-001.name": /Nabisco/})
如果它不起作用,请告诉我。@sprintone,将您的文档结构更改为以下内容:
{
"storeId":"WES-1234",
"items":[{
"reference": "PA-001",
"name": "Cheetos Flamin' Hot",
"qty":5,
"inbound":7
}, ...]
}
这样,您就可以执行数组的特定查询($elemMatch…),但也可以使用引用作为“外键”来执行查找。这样会更加灵活 我不明白你文件的结构。什么是
PA-001
,QX-7785
。。。它们是所有项目的公共字段还是值。我想不出有这种文档结构的场景。是的,这是遗留结构,这些是项目代码,因此,无法预测下一个项目代码会是什么样子。我知道这会起作用,但这里的情况是字段名不可预测,由于PA-001和QZ-775是动态生成的ALLITEM代码,因此,值不是固定的或事先已知的,现在不能更改,因为数据已经是这样了,已经有计划迁移,但到目前为止,我们仍然需要查询此文档