1
当使用mongoDb的$ in子句时,它旨在(并成功)维护数组的顺序(var list)。
但是,我不完全清楚它的逻辑。
我明白它是向后迭代,以保持顺序,但为什么你要指定ref列表在i -1,而不是我?
更多基本的java脚本知识,但它测试我目前的Noobness。
如果有人能帮助我按步骤分解发生的事情,我会很感激。
var list = [ 4, 2, 8 ];
var stack = [];
for (var i = list.length - 1; i > 0; i--) {
var rec = {
"$cond": [
{ "$eq": [ "$_id", list[i-1] ] },
i
]
};
if (stack.length == 0) {
rec["$cond"].push(i+1);
} else {
var lval = stack.pop();
rec["$cond"].push(lval);
}
stack.push(rec);
}
var pipeline = [
{ "$match": { "_id": { "$in": list } }},
{ "$project": { "weight": stack[0] }},
{ "$sort": { "weight": 1 } }
];
db.collection.aggregate(pipeline);
能您投票的答案呢? :) – Shrabanee