我有一個收藏
[
{
firstName: "John",
middleName: "F",
lastName: "Kennedy"
},
{
firstName: "Barack",
lastName: "Obama"
}
]
我正在嘗試創建一個按名稱搜索集合的函式。在嘗試找到匹配項之前,我需要連接名稱。我嘗試了以下
User.aggregate([
{
"$project": {
fullName: {
"$concat": [
"$firstName",
" ",
"$lastName"
]
}
}
},
{
$match: {
"fullName": {
$regex: /[a-z\\s]*oba[a-z\\s]*/i
}
}
}
])
它適用于沒有中間名的名稱。但我也需要它來處理帶有中間名的名字。當我嘗試 concatmiddleName時,我收到一個錯誤,因為路徑middleName并不存在于所有檔案中。我無法實施$cond并且$exists操作員正確地完成了這項作業。任何形式的幫助都將受到高度贊賞。謝謝!
uj5u.com熱心網友回復:
一種選擇是使用$ifNull:
db.collection.aggregate([
{$project: {
fullName: {$concat: [
"$firstName",
" ",
{$ifNull: [
{$concat: ["$middleName", " "]},
""
]},
"$lastName"
]}
}}
])
看看它在操場上的例子是如何作業的
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/517994.html
上一篇:Asyncio收集差異
