猫鼬中的条件查询
Conditional query in mongoose
示例文档
[
{
"_id": ObjectId("612b5d4bbc1bed7ce5d5oa66"),
"username": "test",
"user_details": {}
},
{
"_id": ObjectId("612b5d4bbc1bed7ce5d5oa67"),
"username": "test",
"user_details": {
"name": "Test",
"addreess": "tets addr",
"city": "nddj"
},
verify_at: ISODate("2021-08-30T10:23:37.558Z")
}
]
我想获取那些记录,如果 user_details 是空对象,那么 verify_at 不应该存在,而 user_details 对象有一些值,那么不需要检查 verify_at 是否存在错误的
这是我试过的
$and:[{$or:[{$and:[{user_details:{}},{verify_at:{$exists:false}}]},{$and:{user_details:{$ne:{}}}}]}]
如果我没理解错你可以使用这个查询:
- 如果
user_details
存在 -> 不检查就查找元素 verify_at
- 如果
user_details
是 {}
则检查 verify_at
是否不存在。
yourModel.find({
"$or": [
{
"user_details": {
"$ne": {}
}
},
{
"$and": [
{
"user_details": {}
},
{
"verify_at": {
"$exists": false
}
}
]
}
]
})
示例here
示例文档
[
{
"_id": ObjectId("612b5d4bbc1bed7ce5d5oa66"),
"username": "test",
"user_details": {}
},
{
"_id": ObjectId("612b5d4bbc1bed7ce5d5oa67"),
"username": "test",
"user_details": {
"name": "Test",
"addreess": "tets addr",
"city": "nddj"
},
verify_at: ISODate("2021-08-30T10:23:37.558Z")
}
]
我想获取那些记录,如果 user_details 是空对象,那么 verify_at 不应该存在,而 user_details 对象有一些值,那么不需要检查 verify_at 是否存在错误的 这是我试过的
$and:[{$or:[{$and:[{user_details:{}},{verify_at:{$exists:false}}]},{$and:{user_details:{$ne:{}}}}]}]
如果我没理解错你可以使用这个查询:
- 如果
user_details
存在 -> 不检查就查找元素verify_at
- 如果
user_details
是{}
则检查verify_at
是否不存在。
yourModel.find({
"$or": [
{
"user_details": {
"$ne": {}
}
},
{
"$and": [
{
"user_details": {}
},
{
"verify_at": {
"$exists": false
}
}
]
}
]
})
示例here