我有这样的文档:
{
up: [],
down: []
}
up
和down
包含唯一的用户ID,并且只能在一个数组中。
是否有可能在数组中找到一个ID,然后返回在其中找到ID的地方?
答案 0 :(得分:1)
您可以运行以下聚合管道:
db.collection.aggregate({
$project: {
"foundIn": {
$cond: [
// if the filtered "up" array does not equal an empty array []
{ $in: [ userId, "$up" ] },
// then return "up"
"up",
{
// otherwise we apply the same logic for "down"
$cond: [
{ $in: [ userId, "$down" ] },
"down",
// fall back to "nowhere" result if the searched value is not contained in either array
"nowhere"
]
}
]
}
}
})
答案 1 :(得分:0)
您可以通过以下方式实现:
db.collection.find().forEach(function(doc){
var num=2;
if(doc.up.indexOf(num)>-1)
print("found in up");
else if(doc.down.indexOf(num)>-1)
print("found in down");
else
print("not found")
})