如何在MongoDB中查询?
问题描述:
我的项目在MongoDB中存储这样的:如何在MongoDB中查询?
{"ProductName":"XXXX",
"Catalogs" : [
{
"50008064" : "Apple"
},
{
"50010566" : "Box"
},
{
"50016422" : "Water"
}
]}
现在我想查询所有的项目都属于目录:50008064,怎么样? (目录编号“50008064”,目录名称为“Apple”)
答
您无法以有效的方式查询此内容,并且性能会随着您的数据增长而下降。因此我会认为这是一个模式的错误,你应该重构/迁移到下面的模型,并允许索引:
{"ProductName":"XXXX",
"Catalogs" : [
{
id : "50008064",
value : "Apple"
},
{
id : "50010566",
value : "Box"
},
{
id : "50016422",
value : "Water"
}
]}
然后指数:
ensureIndex({'Catalogs.id':1})
同样,我强烈建议你换你的模式,因为这是一个潜在的性能瓶颈,你不能以任何其他方式修复。
答
这应该可能符合the entry here,虽然这不会很快,如链接中所述。
db.products.find({ "Catalogs.50008064" : { $exists: true } })
那么如何查询目录呢?像这样?db.products.find({“Catalogs.50008064”:{$ exists:true}}) – ericyue 2012-04-10 11:30:16
不,像db.products.find({'Catalogs.id':50008064}),它非常干净更快。 – 2012-04-10 11:31:45