expressJS + MongoDB Update - 如果不存在,则将元素添加到数组字段,

时间:2013-11-04 22:02:33

标签: node.js mongodb express

我想将元素添加到找到元素的数组字段中(如果它尚不存在)。如何在ExpressJS + MongoDB中执行此操作?

我的文档架构:

{ "name" : "Paul",
 "year" : "2013",
 "artist" : "SomeArtist", 
 "moods" : [  "angry",  "furious" ],
 "_id" : ObjectId("526fe5676f066d0353000002") }

我想将元素添加到情绪数组中,如果它还不存在的话。 如何在expressJS中做到?

我已经编写了一个函数,它允许将元素添加到数组中:

exports.setMood = function(req, res) {
var nameWhere = req.body.name;
var newItem = req.body.mood;

db.collection('tracks', function(err, collection) {
    collection.update({ name: nameWhere }, { $push: { moods: newItem } }).toArray(function(err, items) {
        if (err) return res.send(500, err);
        res.send("OK");
    });
});

};

1 个答案:

答案 0 :(得分:0)

您可以使用$addToSet

所以在你的例子中:

  collection.update({ name: nameWhere }, { $addToSet: { moods: newItem } }).toArray(function(err, items) {
        if (err) return res.send(500, err);
        res.send("OK");
    });