2014-11-06 53 views
0

我需要執行一個查詢,該查詢返回id或id數組中的id數組和另一個id或id數組中的所有結果在另一個id數組中的所有結果。也許一個例子將更好地解釋我想要做的事:我怎樣才能找到一個ID在一個數組中,或另一個ID在另一個數組中的所有記錄?

模式:

var somethingSchema = mongoose.Schema({ 
space_id : String, 
title : String, 
created : { 
    type: Date, 
    default: Date.now 
}, 
visibility : { 
    groups : [{ 
     type : String, 
     ref : 'Groups' 
    }], 
    users : [{ 
     type : String, 
     ref : 'User' 
    }] 
} 

});

查詢:

something.find({ 
    space_id: req.user.space_id, 
    $and: [ 
     { $or: [{ "visibility.groups": { $in: groups } }] }, 
     { $or: [{ "visibility.users": { $in: users } }] } 
    ] 
    }, function (err, data) { 
     return res.json(data); 
    }); 

在此示例中,IDS的兩個groupsusers被陣列。上面的查詢不起作用。它總是返回一個空數組。我究竟做錯了什麼?

回答

1

你應該包括所有的條款,或一起在一個$or陣列:

something.find({ 
    space_id: req.user.space_id, 
    $or: [{ "visibility.groups": { $in: groups } }, 
      { "visibility.users": { $in: users } }] 
}, function (err, data) { 
    return res.json(data); 
}); 

翻譯爲:找到所有文檔與匹配space_id並在groupsvisibility.users有一個visibility.groups值值在users

相關問題