#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} ] },
]})