我正在尝试为以下用例的用户创建更新查询。
同一项目可能出现在用户拥有的多个列表中 - 但不能多次出现在同一个列表中。这是我在mongoose中使用的查询,但是如果数组中有多个列表并且我有过滤器'lists.items.id': { '$ne': 'ASIN-B016I2XLBS' }
并且有多个列表,则查询会过滤所有内容。我应该查询lists.$.items.id
吗?当有多个项目时,我的插入语句lists.$.items
不正确吗?
db.users.findAndModify({
'lists.items.id': { '$ne': 'ASIN-B016I2XLBS' },
'lists._id': ObjectId("585047a43246d621dd96c12e"),
username: 'foo' }) []
{ '$push': { 'lists.$.items':
{ prouctName:'bar', id: 'ASIN-B016I2XLBS' }
}
} { new: true, upsert: false, remove: false }
示例用户</ p>
{
"_id" : ObjectId("585046a535543ff7dc23ae1d"),
"username" : "foo",
"lists" : [
{
"_id" : ObjectId("585046a535543ff7dc23ae1e"),
"items" : [
{
"name" : "Regalo My Cot Portable Bed, Royal Blue",
"id" : "ASIN-XXXZZZ"
},
{
"name" : "bar"
"id" : "ASIN-B016I2XLBS"
}
],
"name" : "Shopping List"
},
{
"_id" : ObjectId("585047a43246d621dd96c12e"),
"items" : [],
"name" : "Christmas"
}
]
}