试着弄清楚我是否可以在单个更新语句中执行此操作。我正在使用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}] }
请记住,我试图在一个声明中这样做。
谢谢