"Diary" インターネットさんへの恩返し

いつもソースコードコピペばかりなので,みなさまへ少しばかりの恩返しを

node.js x mongoose でOR/AND/AND&OR組み合わせ検索する(find)方法



スポンサーリンク


f:id:azumami:20160922002437p:plain

node.jsとmongooseを使ったfindでのAND/OR検索。

[目次]

ANDを使った検索

Groupコレクションで、「memberがjohnかつstatusが1」 かつ 「created_byがmeでstatusが1」のデータを検索。

var query = { $and: [ 
                      { "member": "john", "status" : "1" },
                      { "created_by": "me","status" : "1" },
             ]};

Group.find(query, function(err, data){
    console.log(data)
});

ORを使った検索

Groupコレクションで、「memberがjohnかつstatusが1」 または 「created_byがmeでstatusが1」のデータを検索。

var query = { $or: [ 
                      { "member": "john", "status" : "1" },
                      { "created_by": "me","status" : "1" },
             ]};

Group.find(query, function(err, data){
    console.log(data)
});

こういう書き方も出来ます。

Group.find().or([
                  { "member": "john", "status" : "1" },
                  { "created_by": "me", "status" : "1" }
                ])
            .exec(function(err, data){
                  console.log(data);
            });

ANDとORの組合せ

「memberがjohnまたはcath」かつ「placeがtokyoまたはosaka」のデータを検索。
var query = { $and: [
                      { $or: [{ "member" : "john"}, {"member": "cath"}] },
                      { $or: [{ "place" : "tokyo" }, { "place": "osaka" }] }
            ]};

Group.find(query, function (err, data) {
   console.log(data); 
});