在一个到多个embedded式文档mongodb中添加一个条目

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

让我说我有我的MongoDB文件是这样的:

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

现在我需要两个执行两个操作:

  1. 添加一个新号码{office:112342282}
  2. 删除用户的家庭号码

我相信我们可以在Mongo中做到这一点,但我没有得到任何地方的语法,我也无法在MongoDB文档中find它。

PS我正在使用和尚图书馆这样做,僧侣具体的语法会有很大的帮助。 但否则也会​​帮助我!

你想要的是Mongo的$ pull和$ push操作符

应该能够做到这一点,做到以下几点:

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

不幸的是,Mongo不允许您同时在$push$pull操作符的同一个字段上操作(请参阅此问题 )。 所以它真的需要是:

 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}}})