mongodb shell中的“for”循环不会迭代

时间:2016-02-09 11:20:12

标签: mongodb

任何在shell上使用循环的尝试都只返回数组中的最后一个值

例如:

var myarray = [1, 2, 3, 4];
for (var i = 0; i < 4; i++) { 
    db.mylogs.find({ logid: myarray[i]});
}

结果只会返回logid的值,即log myarray[4]

的值

1 个答案:

答案 0 :(得分:0)

无需迭代find()方法,只需使用 $in 方法:

var myarray = [1,2,3,4];
db.mylogs.find({ "logid": {"$in": myarray} });

要获取数组中每个logid的总计数,可以使用聚合框架和以下管道操作:

var myarray = [1, 2, 3, 4],
    pipeline = [
        { "$match": { "logid": { "$in": myarray } } },
        {
            "$group": {
                "_id": "$logid",
                "count": { "$sum": 1 }
            }
        }
    ];

db.mylogs.aggregate(pipeline);