2017-10-20 6 views
1

に私はNode.jsのコードをMongoDBのを照会しています。 マイMongoのドキュメントコレクション(患者コレクション)は、以下の構造を有する:+

Patient collection 

{ 
    "_id" : ObjectId("59e5c28f37ce021e142e7ead"), 
    "MRN" : "00126389", 
    "Family_Name" : "Jones", 
    "First_Name" : "Lydia", 
    "Father_Name" : "Bob", 
    "Maiden_Name" : "", 
    "Mother_Name" : "n/a", 
    "Spouse_Name" : "", 
    "Address" : "", 
    "Telephone_Nbr" : "", 
    "Patient_Visit" : { 
     "Department" : "ER", 
     "Hospital_Status" : "Active", 
     "Case_Nbr" : "17", 
     "Admission_Date" : "01/04/2011 12:00:00 AM", 
     "Admission_Time" : "14:02" 

    } 
} 

マイクエリ実行コードは以下の通りである:

mongoClient.connect(mongoConstr, function(err, db) { 
    if (err) throw err; 
    var query = { 
     $and: [{ 
      "Patient_Visit.Department": "ER" 
     }, { 
      $or: [{ 
       "Patient_Visit.Hospital_Status": "Active Left" 
      }, { 
       "Patient_Visit.Hospital_Status": "Active" 
      }] 
     }] 
    }; 
    var cursor = db.collection("tbl_Patients").find({ 
     query 
    }); 
    cursor.forEach(function(doc) { 
     console.log(JSON.stringify(doc)); 
    }, function(err) { 
     db.close(); 
     throw (err); 
    }); 
}); 

要求が実行されると、私は次のエラーを取得する:

MongoError: unknown operator: $and 

任意の助けいただければ幸いです。

+0

あなたが使用しているMongoのバージョン。 db.versionあたりとして –

+0

3.4.5-rc0-4-g4db4a7c() –

+2

誰かがすでに問題はあなたが '.find(クエリ)を実行する必要がありますされ、誤ったコールバック一部を取得にもかかわらず、あなたに答えることを試みた'としていない戻り値'.find({query})'です。これはES6の構文が 'find({" query ":query}"に拡張されているので、あなたはそれを望んでいません。したがって、エラー。 –

答えて

3

クエリに{クエリ}を交換します。

var cursor = db.collection("tbl_Patients").find(query); 
+0

は、おそらく文字列のいくつかの単語を 'query'が' {}クエリに異なっている '、なぜこれがそうであると言うこと。それがOPの理解に役立つかもしれません。このコンテキストでコールバックは必要ありません。 –

+0

"コールバックを削除する"。ノードのネイティブドライバでは無効です。あなたはマングースを考えています、それは違うのです。 –

+0

ありがとう@Rijad、それは私の問題を修正:) –

関連する問題