Как использовать обновление запроса перьев мангусты с $ not и $ elemMatch - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь обновить мой документ, используя обновление метода 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 }
  ]
}

Используя приведенный выше запрос Iпопробуйте добавить в массив новый объект, который содержит поле 'year': 2018, если его нет в этом массиве, но все время после выполнения этого запроса к массиву добавляется новый объект, хотя массив уже содержит объект с полем 'year':2018.Что не так?

Когда я запускаю запрос выше в оболочке mongoDb, он отлично работает.

1 Ответ

0 голосов
/ 14 октября 2018

Главное, что я заметил, это то, что вы используете API-интерфейс feathersjs adapter.update неправильно.Ссылка на идентификатор вашего документа должна находиться за пределами вашего объекта.Попробуйте переключиться на эту подпись:

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

См. Документацию API для получения дополнительной информации.https://docs.feathersjs.com/api/databases/common.html#adapterupdateid-data-params

...