0

我的项目像这样存储在 MongoDB 中:

{"ProductName":"XXXX",
   "Catalogs" : [
    {
        "50008064" : "Apple"
    },
    {
        "50010566" : "Box"
    },
    {
        "50016422" : "Water"
    }
]}

现在我想查询属于Catalog:50008064的所有项目,怎么办?(目录 ID“50008064”,目录名称“Apple”)

4

2 回答 2

3

您无法以有效的方式查询它,并且性能会随着数据的增长而下降。因此,我认为这是一个架构错误,您应该重构/迁移到以下允许索引的模型:

{"ProductName":"XXXX",
   "Catalogs" : [
    {
        id : "50008064",
        value : "Apple"
    },
    {
        id : "50010566",
        value : "Box"
    },
    {
        id : "50016422",
        value : "Water"
    }
]}

然后索引:

ensureIndex({'Catalogs.id':1})

同样,我强烈建议您更改架构,因为这是一个潜在的性能瓶颈,您无法以任何其他方式解决。

于 2012-04-10T09:55:20.853 回答
0

这应该可以根据这里的条目工作,尽管这不会很快,如链接中所述。

db.products.find({ "Catalogs.50008064" : { $exists: true } } )
于 2012-04-10T07:20:13.167 回答