2017-10-20 62 views
1

我正在通過node.js代碼查詢mongodb。 我蒙戈文檔採集患者(集合)的結構如下:+

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? –

+0

3.4.5-rc0-4-g4db4a7c根據db.version()返回值 –

+2

有人已經試圖回答你,儘管回調部分錯了,問題是你應該做'.find(query)'而不是'.find({query})'。這是一個擴展到'find({「query」:query})'的ES6語法',你不需要它。因此錯誤。 –

回答

3

用查詢替換{query}。

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

可能將幾個單詞串在一起說'query'與'{query}'不同,爲什麼會這樣。這可能只會幫助OP瞭解。在這種情況下你也不需要回調。 –

+0

「刪除回調」。它對節點本地驅動程序無效。你在想貓鼬,這是不同的。 –

+0

謝謝@Rijad,它解決了我的問題:) –