2017-01-08 6 views
1

マングースを使用しています。スキーマは次のようになります。私は何をしようとしているモンゴース複合クエリ

{ 
    "name" : String, 
    "start" : Date, 
    "stop" : Date 
} 

、( "AND")という、クエリを構築することです:

  1. "名前" ==値
  2. "スタート" - 存在しませOR
  3. GTE値を "開始" "停止" -
存在しませOR "停止" LTE値

一方、開始および終了は渡すことも、渡すこともできません(いずれか)。

Mongoエラーのいくつかの種類で終了している間のすべての私の試み:)ので、いくつかの助けを求める。

よろしくお願いいたします。

答えて

1

あなたANDクエリロジックは、2つの方法のいずれかで表現することができます。

暗黙のAND演算

Model.find({ 
    "name": name, 
    "start": { 
     "$or": [ 
      { "$exists": false }, 
      { "$gte": start } 
     ] 
    }, 
    "stop": { 
     "$or": [ 
      { "$exists": false }, 
      { "$gte": stop } 
     ] 
    } 
}).exec(callback); 

明示的なAND演算:

Model.find({ 
    "$and": [ 
     { "name": name }, 
     { 
      "start": { 
       "$or": [ 
        { "$exists": false }, 
        { "$gte": start } 
       ] 
      } 
     }, 
     { 
      "stop": { 
       "$or": [ 
        { "$exists": false }, 
        { "$gte": stop } 
       ] 
      } 
     } 
    ] 
}).exec(callback); 
+1

おかげで、これを仕事をした。 – Lazyexpert