【问题标题】:mongoose - increment a value inside an array [duplicate]猫鼬 - 在数组中增加一个值[重复]
【发布时间】:2018-04-29 18:25:50
【问题描述】:

我有以下架构:

var mySchema = new Schema({
  "name": String,
  "users": [
     { 
       "user_id": ObjectId,
       "counter": Number
     }]
});

文档示例:

{
   "name": "Test",
   "users": [
       {
          "user_id": "aaaaaa",
          "counter": 2
       },
       {
          "user_id": "bbbbbb",
          "counter": 3
       }]
}

我如何findOneAndUpdate 一个特定的user_id 并增加counter

例如:如何在单个操作中找到Test 并更新user_id: bbbbbcounter

【问题讨论】:

  • 到目前为止,我正在做 2 个我想避免的查询:使用“测试”查找文档。然后遍历数组并更新特定的计数器。然后保存我不确定如何在一个查询中执行此操作

标签: node.js mongoose


【解决方案1】:
mongoose.model('MySchema', mySchema); //is this line superflous??
var MySchema = mongoose.model('MySchema');

MySchema.update({"name": "Test", "users.user_id" : "aaaaaa" } , 
                {$inc : {"users.$.counter" : 1} },
                function() {...});

因此,对于第一个对象,您正在寻找要更新的对象。第二个参数是您要更新的内容,其中 $ 用于仅更改查询中当前选择的对象。最后一个参数是回调。

【讨论】:

    猜你喜欢
    • 2012-02-17
    • 1970-01-01
    • 2018-01-05
    • 2022-01-15
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 2017-09-15
    相关资源
    最近更新 更多