小编ebb*_* mo的帖子

嵌套数组的MongoDB $ inc和$ setOnInsert

我搜索了SO并抓取了Mongoose/Mongo文档,但无济于事,因此我的问题.

我想$inc在嵌套数组中的对象中的值,或者$setOnInsert如果它还没有,则创建该对象.

我看到的Mongo文件如下:

{
  "_id": "123",
  "members": [
    {
      "first": "johnny",
      "last": "knoxville",
      "score": 2
    },
    {
      "first": "johnny",
      "last": "cash",
      "score": 3
    },
    // ...and so on
  ],
}
Run Code Online (Sandbox Code Playgroud)

根据这个例子,我的用例是:

  • count如果数组对象中存在变量(基于first和找到last),则递增该变量
  • 如果对象score尚不存在,则将对象添加为1

这篇文章中我了解到我不能同时$set拥有一个我想要的变量$inc.好的 - 这很有道理.

这篇文章有助于理解位置$运算符,以便找到嵌套对象并增加它.

如果我知道该文档存在,我可以简单地进行如下更新:

myDoc = { first: 'johnny', last: 'cash' };

myCollection.findOneAndUpdate(
  {
    _id: '123',
    'members.first': 'johnny',
    'members.last': 'cash'
  },
  {
    $inc: { "members.$.score": 1 …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose mongodb

5
推荐指数
1
解决办法
319
查看次数

标签 统计

javascript ×1

mongodb ×1

mongoose ×1