如何在bson对象中查找记录

时间:2017-09-20 17:34:03

标签: mongodb mongodb-query aggregation-framework

var otherLanguages=[ "English","Arabic","French"];

var first, second;
db.collection.find({ $and: [ { "Language" : { $nin : otherLanguages} },{"Language":{ $ne:null}} ]}).forEach(function(obj){ 

逐一删除341个文档。在这些文档中,我想找出满足两个if语句的文档。后来,我想收集它的数量。

if (obj.find({ $and: [{'POS': { $eq: "Past" } },{'Desp': { $ne: null } }] })) { first= first+1;}
if (obj.find({ $and: [{'POS': { $eq: "Past" } },{'Desp': { $eq: null } }] })) {second= second+1;}
    }); 
    print (first,second)

我知道我不能在obj上使用find()函数,但有没有办法搜索这个“bson obj”来查找计数。 如果这不可行,那么请建议一种获得所需结果的方法。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,您可以通过使用聚合框架来实现这一目标:

db.collection.aggregate({
    // filter out all documents that you don't care about
    $match: {
        "Language": { $nin: otherLanguages, $ne: null },
        "POS": "Past"
    },
}, {
    // then split into groups...
    $group: {
        _id: { $eq: [ "$Desp", null ] }, // ...one for the "eq: null" and one for the "ne: null"
        "count": { $sum: 1 } // ...and count the number of documents in each group
    }
})