javascript 有什么方法可以只在MongoDB中不存在字段时才插入字段吗?

ktca8awb  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(113)

我已经尝试了一些解决方案,我发现,但我不知道这是如何工作(我新蒙戈).我有一个文档,看起来像这样:

{
  "_id": {
    "$oid": "63ef95daf324e5a26354eb61"
  },
  "idCarga": "6182944",
  "12121212121212": {
    "info1": "hello",
    "info2": "goodbye"
  },
  "13131313131313": {
    "info1": "hello",
    "info2": "goodbye"
  }
}

我的目标是:
1.如果我尝试使用新的产品ID字段(如15151515151515)更新文档,它将作为新字段插入。
1.如果我尝试使用已经存在的产品ID(如13131313131313)更新文档,则不会发生任何情况(不插入或更新任何内容)。
我使用$exists运算符和upsert选项得到了一些结果。但是我必须插入这么多产品ID,这似乎是一个不可行的选项。是否有任何方法可以做到这一点,每个“idCarga”只有一个文档?或者我必须将其分为2个集合?提前感谢。

zxlwwiss

zxlwwiss1#

简单地用$ifNull执行$set

db.collection.update({
  <your criteria>
},[
  {
    $set: {
      "<your id>": {
        "$ifNull": [
          "$<your id>",
          {
            <your new sub doc>
          }
        ]
      }
    }
  }
])

Mongo Playground for new id case
Mongo Playground for existing id case

相关问题