2017-10-20 8 views
1

J'interroge mongodb via le code node.js. Mes documents mongo collection (patients Collection) présente la structure suivante: +

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" 

    } 
} 

Mon code d'exécution de la requête est présentée ci-dessous:

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); 
    }); 
}); 

Lorsque la demande est exécutée, je reçois l'erreur suivante:

MongoError: unknown operator: $and 

Toute aide serait appréciée.

+0

quelle version de Mongo vous utilisez.? –

+0

3.4.5-rc0-4-g4db4a7c selon la valeur de retour db.version() –

+2

Quelqu'un a déjà tenté de vous répondre, Bien que la partie callback soit incorrecte, le problème est que vous devriez faire '.find (query)' et non '.find ({requête})'. C'est une syntaxe ES6 étendue à 'find ({" query ": query})' et vous ne le voulez pas. D'où l'erreur. –

Répondre

3

Remplacez la {requête} par une requête.

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

Peut-être enchaîner quelques mots pour dire que 'query' est différent de' {query }' et pourquoi c'est ainsi. Cela pourrait aider le PO à comprendre. De plus, vous n'avez pas besoin du rappel dans ce contexte. –

+0

"supprimer le rappel". Ce n'est pas valide pour le pilote natif de noeud. Tu penses à la mangouste, ce qui est différent. –

+0

Merci @Rijad, ça a corrigé mon problème :) –