#mongodb #mongoose #mongodb-query #mongoose-schema
#mongodb #мангуст #mongodb-запрос #мангуст-схема
Вопрос:
У меня есть документ, подобный приведенному ниже
[
{
"_id" : ObjectId("601992e354787877866"),
"status" : 1,
"user_id" : 2,
},
{
"_id" : ObjectId("601992e354787877866"),
"status" : 2,
"user_id" : 2,
},
{
"_id" : ObjectId("601992e354787877866"),
"status" : 2,
"user_id" : 3,
},
{
"_id" : ObjectId("601992e354787877866"),
"status" : 3,
"user_id" : 4,
}
]
столбец состояния может иметь значение 1, 2 или 3. Я хочу сопоставлять user_id только в том случае, если значение столбца статуса равно 2, а документ, имеющий статус, отличный от 2, будет отображаться в результате как есть.
Я пробовал с помощью запроса соответствия
db.collection.find({"status" : 1});
Но оно будет соответствовать только статусу
Теперь, если мой идентификатор пользователя равен 2, вывод должен быть
[
{
"_id" : ObjectId("601992e354787877866"),
"status" : 1,
"user_id" : 2,
},
{
"_id" : ObjectId("601992e354787877866"),
"status" : 2,
"user_id" : 2,
},
{
"_id" : ObjectId("601992e354787877866"),
"status" : 3,
"user_id" : 4,
}
]
Здесь вы можете увидеть документ, статус которого равен 2, а идентификатор пользователя не равен 2, отсутствует в ожидаемом выводе, но для документа, статус которого отличается от 2, будет получен результат
Комментарии:
1. Это то, что вы хотите?. Также опубликуйте пример ввода и ожидаемый результат, чтобы лучше понять.
2. Обновил вопрос с более подробной информацией. Пожалуйста, проверьте
Ответ №1:
Вы могли бы использовать $or
оператор: https://mongoplayground.net/p/y9vR2PEGYdI
db.collection.find({
$or: [
{
status: 2,
user_id: 2
},
{
status: {
$ne: 2
}
}
]
})