【问题标题】:How to use feathers mongoose query update with $not and $elemMatch如何使用 $not 和 $elemMatch 使用羽毛猫鼬查询更新
【发布时间】:2018-10-01 15:44:03
【问题描述】:

我正在尝试使用服务器端的 feathersjs 方法更新我的文档,如下所示:

context.app.service('myDocumens').update({
  _id: obj._id,
  'data': {
    "$not": {
      "$elemMatch": {
        'year': 2018
      }
    }
  }
}, {
  $addToSet: {
    'data': {
      'position': 'senior',
      'group': 1,
      'comment': "",
      'year': 2018
    }
  }
}).then(result => {    
  console.log(result)    
});}

我在下面显示示例文档:

{
  "_id": ObjectId("...."),
  "firstName": "Adam",
  "lastName": "Brown",
  "data": [
     { "position":"senior","group":1,"comment":"","year":2018 },
     { "position":"junior","group":0,"comment":"","year":2017 }
  ]
}

使用上面的查询,我尝试将新对象添加到数组中,其中包含字段 'year': 2018 如果它在此数组中不存在,但在向数组运行此查询后一直添加新对象,尽管数组已经包含一个字段为“年”的对象:2018。怎么了?

当我在 mongoDb shell 中运行上述查询时,它工作正常。

【问题讨论】:

  • 您可以添加示例数据吗?

标签: node.js mongodb mongoose feathersjs


【解决方案1】:

我注意到的主要事情是您错误地使用了 feathersjs adapter.update API。对您的文档 ID 的引用应该在您的对象之外。尝试切换到此签名:

context.app.service('myDocumens').update(id, data, params);

有关详细信息,请参阅 API 文档。 https://docs.feathersjs.com/api/databases/common.html#adapterupdateid-data-params

【讨论】:

    猜你喜欢
    • 2018-02-23
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多