使用单个语句

时间:2017-12-21 17:09:30

标签: arrays node.js mongodb updates

试着弄清楚我是否可以在单个更新语句中执行此操作。我正在使用nodejs。

我有一个带有以下结构的“数据”集合

_id: id
books: [{
bookId: id,
count: count
}]

基本上是2个顶级字段,第一个_id和第二个对象数组称为书籍。该对象有2个字段bookid和count。

所以,如果我的数据是这样的

{ _id:1, 书籍:[{bookId:100,count:1},{bookId:101,count:2}] }

{ _id:2, 书籍:[{bookId:100,count:3},{bookId:101,count:4}] }

{ _id:3, 书籍:[{bookId:103,count:3},{bookId:101,count:4}] }

我想基于顶级字段_id进行查询,然后我想更新books数组。我也有bookId,所以如果数组有这个bookId,那么count应该增加1.如果book数组没有这个bookId,那么应该添加一个count设置为1的新对象。

所以例如对于_id:1和bookId:101,更新应该导致

{ _id:1, 书籍:[{bookId:100,count:1},{bookId:101,count:3}] }

并且对于_id:1和bookId:103,更新应该导致

{ _id:1, 书籍:[{bookId:100,count:1},{bookId:101,count:3},{bookId:103,count:1}] }

请记住,我试图在一个声明中这样做。

谢谢

0 个答案:

没有答案