与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