让我们说这是我的收藏中的表格:
{
"_id" : ObjectId("557cf6bbd8efe38c627bffdf"),
"name" : "John Doe",
"rating" : 9,
"newF" : [
"milk",
"Eggs",
"Beans",
"Cream"
]
}
用户输入某些输入后,会将其发送到我的节点服务器,然后我的节点服务器会将该项添加到列表"newF"
,然后将其发送回我的MongoDB
并保存。
我正在尝试使用update,它可以成功更改此表中的值,但我不确定如何将新项添加到该列表中。我在$push
内使用MongoDB shell
进行了此操作,但不确定如何在节点上执行此操作。
以下是我的代码片段:
db.collection('connlist').update({ _id: new ObjectId("e57cf6bb28efe38c6a7bf6df")}, { name: "JohnDoe", rating: 9, newF: ["Milk, Eggs", "Beans"] }, function(err,doc){
console.log(doc);
});
答案 0 :(得分:1)
添加新项目的语法与shell中的语法相同:
// make sure you actually imported "ObjectID"
var ObjectId = require('mongodb').ObjectID;
db.collection('conlist').update(
{ "_id": new ObjectId("e57cf6bb28efe38c6a7bf6df") },
{ "$push": { "newF": { "$each": [ "cream", "butter" ] } } },
function(err,numAffected) {
// do something in the callback
}
)
如果您想要返回修改过的文档而不是仅仅进行更改,也许可以使用.findOneAndUpdate()
。
当然使用$push
并且可能使用$each
,这允许在添加到数组时添加多个数组元素。如果您想要“唯一”商品,请使用操作允许的$addToSet
。
一般而言,对于其他项目,您应该在文档的更新部分使用$set
或其他运算符。如果没有这些操作符,您只需用您在语句的“更新”部分中放置的任何结构“替换”文档内容。