Как правильно использовать функцию ‘exist’ в mongodb, как в sql?

#node.js #mongodb #nosql

#node.js #mongodb #nosql

Вопрос:

Я использую Node.js mongodb. У меня в коллекции мало документов, и я хочу знать, есть ли в моей коллекции какой-нибудь документ, соответствующий моему состоянию. Конечно, я могу просто использовать myModel.find({ myField: someValue }) и проверить, приходит что-нибудь или нет. Но я хочу использовать решение, подобное ключевому слову sql provides exists ? Помогите мне, пожалуйста

Редактировать: моя ошибка. Я забыл сказать, что «производительность превыше всего».

Ответ №1:

MongoDB $exists на самом деле не очень помогает вам узнать, существует ли определенный документ в вашей коллекции. Она используется, например, для предоставления вам всех документов с определенным набором полей.

MongoDB не имеет встроенной поддержки sql, подобного exists. Однако вы можете использовать myModel.findOne({ myField: someValue }) , а затем проверить, равно ли оно null.

Для повышения производительности вы можете указать MongoDB загружать идентификатор объекта только через проекцию, вот так:

 myModel.findOne({ myField: someValue }, {_id: 1})
  

Ответ №2:

В mongodb есть существующий механизм, я продемонстрирую пример ниже.

Например, ниже я ищу записи, в которых есть поля tomato.consensus и которые являются пустыми, поэтому я могу удалить их или избежать их. В случае, если бы я искал «tomato.consensus»: Dublin, я бы изменил Null на Dublin, чтобы соответствовать этому.

Я надеюсь, что это полезно, если не устранит какие-либо вопросы

 tomato
----consensus

db.movieDetails.updateMany({$and: [
        {"tomato.consensus": {$exists: true} },
        {"tomato.consensus": null} ] },
]})