有沒有辦法在一行中使用pymongo查詢檔案時忽略一個引數,例如:
db.find_one( { "first_name": firstname, "last_name": lastname, "age": age if age else <ignore this field from querying all together> } ):
uj5u.com熱心網友回復:
$and與操作員一起作業$or。
$and- 匹配1.1。和1.2。條件。1.1。匹配
first_name和last_name。1.2.
$or- 匹配age變數為空或age欄位與age變數匹配。
db.find_one({
$and: [
{
"first_name": firstname,
"last_name": lastname
},
{
$or: [
{
$expr: {
$eq: [
null,
age
]
}
},
{
"age": age
}
]
}
]
})
示例 Mongo Playground
uj5u.com熱心網友回復:
您可以嘗試以下幾種方法:
filter = { "first_name": firstname, "last_name": lastname }
if age:
filter["age"] = age
collection.find_one(filter)
-或者-
filter = { "first_name": firstname, "last_name": lastname }
age_filter = { "$expr": { "$eq": [ "$age", { "$ifNull": [ age, "$age" ] } ] } }
filter.update(age_filter)
collection.find_one(filter)
-OR-(同上)
collection.find_one({ "first_name": firstname, "last_name": lastname, "$expr": { "$eq": [ "$age", { "$ifNull": [ age, "$age" ] } ] } } )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/482940.html
標籤:mongodb
