我有一个域名"通知"
{
_id: 1
is_action: false,
user:[{
user_id: 5,
status: "R"
},
{
user_id: 8,
status: "U"
}],
priority:1
},
{
_id: 2
is_action: true,
user:[{
user_id: 5,
status: "U"
},
{
user_id: 8,
status: "U"
}],
priority:1
}
我的查询找到user_id = 5 ------
的通知db.notifications.aggregate([
{$unwind:"$user"},
{$match:{
"user.user_id":5,
is_action: false
}},
{$sort:{priority:1}}
])
但我需要根据以下条件对上述查询进行排序
if(status == "U"){
Sort by "priority"
}else{
Sort by "_id"
}
答案 0 :(得分:2)
使用$cond创建新字段,例如
{
$project:
{
otherfield: 1,
sortField: {
$cond: { if: { $eq: [ "$status","U" ] },
then: "$priority",
else: "$_id" }
}
}
}
然后对此字段进行排序。
P.S。 $ cond是MongoDB 2.6及以上版本的新运算符