【发布时间】:2015-08-14 12:48:00
【问题描述】:
我在 MongoDB 中有一个模型,其中包含一个数组(类别),其中包含一个数组(图片)。 衬衫模型如下所示:
{ _id: 100, category: [ { name: 'CatName', _id: 101, picture: [Object] } ] }
我的图片数组看起来像这样:
[ { path: 'p1', _id: 102 },
{ path: 'p2', _id: 103 } ] }
我通过了 3 个变量
- 主数组ID 100 (var1)
- 类别名称是 CatName (var2)
- 图片id是102 (var3)
我想获取一个如下所示的数组:
{ _id: 100, category: [ { name: 'CatName', _id: 101,
picture: [ { path: 'p1', _id: 102 }]
} ]
}
我试过的是这样的:
Shirt.find( {_id: var1} ,
{category: { $and:[ { name: var2 } , { picture: {$elemMatch: {_id: var3}}} ] }} )
.exec(function(err, product) {
console.log('Result ' + product );
res.jsonp(product);
});
但我收到的结果是未定义的第一个代码
我尝试的第二个代码:
Shirt.find( {_id: var1} ,
{category: {$elemMatch: { name: var2,picture: {$elemMatch: {_id: var3} }}} } )
第二个代码的结果过滤 var1 和 var2 的数组 但它包含整个图片数组,这意味着它不过滤 var3
- 找到我想要的东西的正确代码是什么?
- 这是购物网站数据库的正确方法还是您有更好的建议?
- 我是否正确应用了父子数据库?
谢谢!
【问题讨论】:
-
使用“picture._id”代替$elemMatch
-
它不起作用。而且我不认为 DOT 是在 mongodb 查找操作中定义的