【问题标题】:Loopback Update property Array of ObjectLoopback 更新对象的属性数组
【发布时间】:2019-07-29 20:55:03
【问题描述】:

我正在使用环回和 mongodb。 现在我有一个模型,它的属性类型之一是对象数组。 mongo 中的文档将如下所示

{
  "id": "123123213",
  "name": "Some Name",
  "colors": [{
    "colorId": "1"
    "colorName: "Red"
  }, {
    "colorId": "2",
    "colorName: "Blue"
  }]
}

现在我需要查询更新和删除颜色数组中的特定对象。假设我只需要将colorId 2 中的colorName 更新为绿色。 并删除colorId为2的Color对象。

如何在环回中实现这一点? 请指教 ! 谢谢。

【问题讨论】:

    标签: arrays mongodb loopback


    【解决方案1】:

    在 mongo CLI 中,您可以使用 $(位置)从嵌入的数组文档中更新匹配元素

    更新

    > db.colors.update({"colors.colorId" :"2"}, {$set : {"colors.$.colorName" : "Green"}})
    

    使用$pull删除

    > db.colors.update({}, {$pull : {"colors" : {"colorId" : "2"}}})
    

    【讨论】:

    • 我可以在 Mongo CLI 中进行查询,但不能在环回中进行查询。在做了一些研究之后,正如这里所说,github.com/strongloop/loopback-connector-mongodb 我需要先设置allowExtendedOperators = true。非常感谢!
    • 如何在不使用 $push 的情况下将新对象添加到环回中的对象数组中? (在这种情况下如何将新对象添加到颜色数组)?任何帮助将不胜感激。
    • 我们可以使用环回核心 API 来做到这一点吗?
    • @ManishBalodia 是的,我们可以,使用此代码代替 YourModel.updateAll({"colors.colorId":"2"}, {{"$set": {"colors.$.colorName": "Green"}}})。但别忘了先在你的 datasource.json 中设置"allowExtendedOperators": true
    猜你喜欢
    • 2023-03-18
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多