MongoDB插入记录问题

时间:2014-01-17 13:31:20

标签: javascript mongodb express

我有一个Mongo DB结构,看起来像这样:

db.users.find().pretty();
{
    "_id" : ObjectId("52b42b148ffa91f7ebbe8ebc"),
    "username" : "test",
    "password" : "test",
    "party" : [
        "4988",
        "5037"
    ],
    "something" : [
        "3571"
    ],
    "ludilo" : [],


}

我在我的应用程序和本模块中使用快速js连接到Mongo https://npmjs.org/package/mongodb

如何为具有我从会话获取的id的用户插入一个条目到“something”数组。

我试过这样的事,但没有成功

var collection = db.collection('users');
         collection.find({'_id':new ObjectID(req.user.id)}).toArray(function(err, items) {
            console.dir(items);
          }).insert({"something":"1234"});

2 个答案:

答案 0 :(得分:2)

您可以使用

$push数组的值
db.users.update(
    { _id: ObjectId( "52b42b148ffa91f7ebbe8ebc" ) },
    { $push: { something: "1234" } }
)

或者如果您不希望阵列中有任何重复项,则可以使用$addToSet

db.users.update(
    { _id: ObjectId( "52b42b148ffa91f7ebbe8ebc" ) },
    { $addToSet: { something: "1234" } }
)

答案 1 :(得分:0)

您可以尝试以下代码:

collection.find({_id: new ObjectID(req.user.id)}).toArray(function(err, items) {
  var doc = items[0];
  doc.something.push('1234');
  collection.update({_id: doc._id}, {$set: {something: doc.something}}, {safe: true}, function() {
    //your next actions
  });
});

我在本地计算机上运行此代码,似乎工作正常