为什么MongoDB在从变量读取时忽略该值,而不是在直接输入时忽略该值?

时间:2015-09-08 16:28:44

标签: node.js mongodb

与node.js一起使用的mongodb我有一个非常奇怪的问题。我的收藏集channels看起来:

[
    {
        name: "Main",
        is_global: true
    },
    {
        name: "Another one",
        is_global: false,
        owner: 472,
        ops: [],
        subscriptions: [472]
    }

]

我希望得到is_global为真的所有对象,或者订阅中是用户的id。我正在使用功能:

var findChannels = function(db, user_id, callback) {
    debug("Get for id %s", user_id); // "Get for id 472"

    var cursor = db.collection('channels').find({ $or: [ { "is_global":true}, {"subscriptions" : user_id} ] } );
    var output = [];
    cursor.each(function(err, doc) {
        assert.equal(err, null);
        if (doc != null) {
            output.push(doc);
        } else {
            callback(output);
        }
    });
};

我不知道为什么我只获得第一个对象(is_global为真),而没有第二个对象。此外,当我直接在功能中设置用户ID时,一切正常,为什么?

var cursor = db.collection('channels').find({ $or: [ { "is_global":true}, {"subscriptions" : user_id} ] } );
// Returns just one
var cursor = db.collection('channels').find({ $or: [ { "is_global":true}, {"subscriptions" : 472} ] } );
// Returns two

0 个答案:

没有答案