我想根據條件獲取貓鼬中的特定欄位。這是我想要的情況這是資料:
{
...
businessInfo: {
isBusinessVerified: true
categories: [...]
}
...
}
我希望當 isBusinessVerified 為真時回傳整個businessInfo物件,如果不回傳則僅businessInfo回傳isBusinessVerified欄位
這是我現在的實作:
const condition = {
...
businessInfo: {
$cond: [
{
$eq: ['$businessInfo.isBusinessVerified', true],
},
'$businessInfo',
'$$REMOVE',
],
},
};
const userData = await userProvider.findOne({ _id: userId }, condition);
另外,這是可行的,但我并不僅僅businessInfo在isBusinessVerified其中。我收到了這個錯誤但是它的作業原理server error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
uj5u.com熱心網友回復:
您實際上是在正確的軌道上使用$cond來處理您的 businessInfo 物件。只需放入簡單的案例(即只回傳標志)就else可以了。
db.collection.aggregate([
{
"$addFields": {
"businessInfo": {
"$cond": {
"if": "$businessInfo.isBusinessVerified",
"then": "$businessInfo",
"else": {
businessInfo: {
isBusinessVerified: "$businessInfo.isBusinessVerified"
}
}
}
}
}
}
])
這是Mongo游樂場供您參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/459368.html
