【问题标题】:UpdateMany document with array of objects in mongodbUpdateMany 文档中包含 mongodb 中的对象数组
【发布时间】:2021-06-02 12:10:55
【问题描述】:

我有一个像这样的 mongodb 集合

[
    {
        pId: "p1",
        apikey: "a2",
        count: 0
    },
    {
        pId: "p2",
        apikey: "a2",
        count: 0
    },
    {
        pId: "p2",
        apikey: "a3",
        count: 0
    }
]

我有一个输入,它是对象数组。我想增加计数。 输入对象如下所示

[
    {
        pId: "p1",
        apikey: "a2"
    },
    {
        pId: "p2",
        apikey: "a2"
    }
]

上面的 2 个输入对象与集合中的前 2 个对象匹配。 我通过迭代输入数组来递增。 有没有其他方法可以做到这一点?

【问题讨论】:

  • 1) 你想匹配哪个字段 pIdapiKey 或两者都匹配? 2)如果找不到元素怎么办?
  • 在两者上,如果没有找到,则不应该发生任何变化。

标签: javascript node.js arrays mongodb updates


【解决方案1】:

您可以在$or 条件中传递您的输入项,并使用$inccount 加1,

let items = [
  { pId: "p1", apikey: "a2" },
  { pId: "p2", apikey: "a2" }
];
db.collection.updateMany({ $or: items }, { $inc: { count: 1 } });

Playground

【讨论】:

  • 这是干净和简单的$or 像这样工作,只是我忘记了,谢谢:)
猜你喜欢
  • 2012-11-26
  • 2016-12-11
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多