在一对多嵌入文档mongodb中附加一个条目

时间:2014-03-14 18:31:10

标签: javascript node.js mongodb nosql

我是MongoDB的新手,我遇到了以下用例:

让我说我的mongodb文件是这样的:

{
    _id: "joe",
    name: "Joe Bookreader",
    numbers: [
                {
                    mobile: 741134217,
                },
                {
                    home: 123452411
                }
            ]
}

现在我需要两次执行两项操作:

  1. 添加新号码{office:112342282}
  2. 删除用户主页号码
  3. 我相信我们可以在Mongo中执行此操作,但我没有在任何地方获取语法,我也无法在MongoDB文档中找到它。

    P.S。我使用Monk Library这样做,和尚的具体语法会有很大的帮助。但除此之外它也会帮助我!

1 个答案:

答案 0 :(得分:2)

你想要的是Mongo的$pull$push运营商

应该能够执行以下操作:

db.User.update({_id: 'joe'}, {$push: {numbers: {office: 112342282}}, $pull: {numbers: {home: 123452411}}});

不幸的是,Mongo并不允许您同时使用$push$pull运算符在同一个字段上运行(请参阅this issue)。所以它真的需要:

db.User.update({_id: 'joe'}, { $push: { numbers:  { office: 112342282}}})
db.User.update({_id: 'joe'}, { $pull: { numbers: {home: 123452411}}})

使用和尚的风格:

var users = db.get('users');
users.update({_id: 'joe'}, { $push: { numbers:  { office: 112342282}}})
users.update({_id: 'joe'}, { $pull: { numbers: {home: 123452411}}})