mongodb 中的条件检查列值
Conditional check column value in 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,
}
]
status 列可以有值 1、2 或 3。我只想匹配 user_id 仅当 status 列值为 2 并且状态不是 2 的文档将按原样出现。
我试过匹配查询
db.collection.find({"status" : 1});
但是只会匹配状态
现在如果我的用户 id 是 2 那么输出应该是 b
[
{
"_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 并且 user_id 不等于 2 的文档不在预期输出中,但是对于状态不是 2 的文档将会出现结果
您可以使用 $or
运算符:https://mongoplayground.net/p/y9vR2PEGYdI
db.collection.find({
$or: [
{
status: 2,
user_id: 2
},
{
status: {
$ne: 2
}
}
]
})
我有如下文件
[
{
"_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,
}
]
status 列可以有值 1、2 或 3。我只想匹配 user_id 仅当 status 列值为 2 并且状态不是 2 的文档将按原样出现。
我试过匹配查询
db.collection.find({"status" : 1});
但是只会匹配状态
现在如果我的用户 id 是 2 那么输出应该是 b
[
{
"_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 并且 user_id 不等于 2 的文档不在预期输出中,但是对于状态不是 2 的文档将会出现结果
您可以使用 $or
运算符:https://mongoplayground.net/p/y9vR2PEGYdI
db.collection.find({
$or: [
{
status: 2,
user_id: 2
},
{
status: {
$ne: 2
}
}
]
})