【发布时间】:2015-04-13 17:22:01
【问题描述】:
我有一个类似的收藏
{
"LifeTime" : 123.000,
"Host" : "xxx.com",
},
{
"LifeTime" : 213.000,
"Host" : "yyy.com",
},
{
"LifeTime" : 321.000,
"Host" : "zzz.com",
}
和一个预定义的数组,比如
["xxx.com","yyy.com"]
现在我想使用 $let 和 $cond 进行投影,这样如果数组中存在主机,则 LifeTime 将为 0,否则与 LifeTime 相同。
我试过了
LifeTime: {
$let: {
vars: {
hostname: '$Host'
},
in: {
"$cond": [
{
"$and": [
{
"$gte": [
ArrayOfPredefinedHost.indexOf('$$hostname'),
0
]
}
]
},
0,
"$LifeTime"
]
}
}
}
但它没有返回预期的结果。我认为indexOf 试图找到$$hostname 而不是xxx.com,yyy.com & zzz.com。
我该如何做这种复杂的查询?
【问题讨论】:
标签: mongodb mongoose mongodb-query