确保恰好有N个值X的项保留在mongodb的数组中

时间:2018-12-13 08:07:30

标签: mongodb mongodb-query

假设我的MongoDB集合中有一个文档,如下所示:

{
  "_id": "coffee",
  "orders": [ "espresso", "cappuccino", "espresso", ... ],
}

如何使用单个更新语句来确保本文档中确切地说有2个espresso,而又不知道有多少个db.test.update( { _id: "coffee" }, { "$pull": { "orders": "espresso" } } );

我知道我可以使用2条连续的语句

db.test.update(
  { "_id": "coffee" },
  { "$push": { "orders": { "$each": ["espresso", "espresso"] } } }
);

之后

Updating the path 'orders' would create a conflict at 'orders'

但是当将两者合并为一条语句时,MongoDB会遇到错误40,并声称model = SavedModelBundle.load(MODEL_PATH, "serve"); outputs = model.session().runner().feed("input_layer", in).fetch("time_distributed/transpose_1:0").run(); (这是可以理解的-MongoDB怎么做?)。

那么,如何在单个语句中完成上述操作?请注意,由于我将在较大的无序批量操作的上下文中使用以上内容,因此将以上内容组合到有序批量操作中将无效。

感谢您的帮助!

0 个答案:

没有答案