userlist集合包含以下格式的文档。
{
"_id" : ObjectId("5381d32ce72cc794166eede2"),
"name" : "Haseeb",
"password" : "dgkhan",
"email" : "hasseeb@yahoo.com",
"address" : "237 D, Faisal Town , Lahore",
"phone" : "5162806"
}
我打算在现有文档中添加另一个成员,以便生成的文档看起来像这样。
{
"_id" : ObjectId("5381d32ce72cc794166eede2"),
"name" : "Haseeb",
"password" : "dgkhan",
"email" : "hasseeb@yahoo.com",
"address" : "237 D, Faisal Town , Lahore",
"phone" : "5162806",
"purchases" : [{
"itemID": xyz,
"quantity": 142
},
{
"itemID": kjh,
"quantity": 987
}
}]
}
为此,我编写了以下mongoskin查询,但它没有执行任何更新。
db.collection('userlist').update(
{_id:req.session._id},
{
'$push': { purchases: {
itemID: item.ID,
quantity: item.quantity
}
}
}, function(err) {
if (err) throw err;
console.log('Updated!');
});
}
req.session._id = 5381d32ce72cc794166eede2的值,即我的集合中docuemnt的有效_id字段,而item.ID和item.quantity也是有效的字符串。 任何帮助都会非常感激。
答案 0 :(得分:2)
我对Mongoose比较熟悉,但是看看你可以使用的docs:
collection.updateById(req.session._id, ...)
或
collection.update({_id: toObjectID(req.session_id)}, ...)
答案 1 :(得分:0)
我认为你应该使用$ set而不是$ push。
此特定问题的一个很好的资源是:http://docs.mongodb.org/manual/reference/method/db.collection.update/#db.collection.update
答案 2 :(得分:0)
像这样的东西。您需要包含$ each语法。
db.collection('userlist').update(
{_id:req.session._id},
{
$push { purchases: { $each: {
itemID: item.ID,
quantity: item.quantity
}
}
}
}, function(err) {
if (err) throw err;
console.log('Updated!');
});
}