2017-10-09 3 views
1

MongoDB ObjektstrukturAbfrage MongoDB mit leeren und nicht leeren Werten

{ 
    "_id" : ObjectId("59db626f6944c019616eb9cf"), 
    "category" : "Flat", 
    "purpose" : "SALE", 
    "price" : 2000, 
    "area" : 2, 
    "lotArea" : 2, 
    "description" : "nothing", 
    "features" : { 
     "beds" : 3, 
     "baths" : 3, 
     "totalRooms" : 2, 
     "dining" : true, 
     "furnishing" : true, 
     "flooring" : true, 
     "servantQuarter" : true, 
     "waterHeating" : true, 
     "ceiling" : true, 
     "cooling" : "Central", 
     "heating" : "Central", 
     "installedAppliances" : [ 
      "nothing" 
     ] 
    }, 
    "dealerId" : [ ], 
    "images" : [ ], 
    "loc" : { 
     "latitude" : "33.652324769150894", 
     "longitude" : "72.95517927486878" 
    }, 
    "address" : { 
     "city" : "Islamabad", 
     "house_no" : "1", 
     "street_no" : "1", 
     "sector" : "G-13", 
     "area_description" : "commercial" 
    }, 
    "__v" : 0 
} 
{ 
    "_id" : ObjectId("59db62a06944c019616eb9d0"), 
    "category" : "Flat", 
    "purpose" : "SALE", 
    "price" : 2001, 
    "area" : 1, 
    "lotArea" : 1, 
    "description" : "nothing", 
    "features" : { 
     "beds" : 2, 
     "baths" : 2, 
     "totalRooms" : 2, 
     "flooring" : true, 
     "furnishing" : true, 
     "ceiling" : true, 
     "waterHeating" : true, 
     "servantQuarter" : true, 
     "dining" : true, 
     "cooling" : "AC", 
     "heating" : "Central", 
     "installedAppliances" : [ 
      "nothing" 
     ] 
    }, 
    "dealerId" : [ ], 
    "images" : [ ], 
    "loc" : { 
     "latitude" : "33.65243977011859", 
     "longitude" : "72.9547689790985" 
    }, 
    "address" : { 
     "city" : "Islamabad", 
     "house_no" : "11", 
     "street_no" : "1", 
     "sector" : "G-13", 
     "area_description" : "dd" 
    }, 
    "__v" : 0 
} 
{ 
    "_id" : ObjectId("59db7ae1bfbdd82adf9c5ddc"), 
    "category" : "Flat", 
    "purpose" : "SALE", 
    "price" : 20000, 
    "area" : 2, 
    "lotArea" : 2, 
    "description" : "nothing", 
    "features" : { 
     "beds" : 2, 
     "baths" : 2, 
     "totalRooms" : 1, 
     "ceiling" : true, 
     "furnishing" : true, 
     "flooring" : true, 
     "waterHeating" : true, 
     "dining" : true, 
     "servantQuarter" : true, 
     "cooling" : "AC", 
     "heating" : "Heaters", 
     "installedAppliances" : [ 
      "nothing" 
     ] 
    }, 
    "dealerId" : [ ], 
    "images" : [ ], 
    "loc" : { 
     "latitude" : "33.664966530995855", 
     "longitude" : "72.99625174581297" 
    }, 
    "address" : { 
     "city" : "Islamabad", 
     "house_no" : "1", 
     "street_no" : "1", 
     "sector" : "G-11", 
     "area_description" : "commercial" 
    }, 
    "__v" : 0 

ich einige Daten zum Beispiel auf leere und nicht leere Zeichenfolge basierend abfragen möge

db.properties.find({"purpose":"SALE,"address.city":""}).pretty() 

, wenn der Benutzer „Zweck eingeben "value, aber gibt nicht den" address.city "-Wert ein, dann sollten nur die Daten zurückgegeben werden, die zum Verkaufszweck bestimmt sind, und wenn ein Wert für" address.city "vom Benutzer eingegeben wird, z

db.properties.find({"purpose":"SALE,"address.city":"Islamabad"}).pretty() 

Jetzt müssen die Daten von Zweckverkauf der bestimmten Stadt sein.

Eigentlich benötige ich diese Art von Abfrage für die erweiterte Suche, die den Wert leer oder nicht leer in $ und logische Bedingung behandeln und ich habe eine lange Liste von Möglichkeiten, die Daten von mongodb auf der Benutzervorauswahlsuche abfragen sollten.

+0

Das sieht https://stackoverflow.com/questions/42315649 sehr ähnlich –

Antwort

0

Sie können eine Liste der Städte müssen nach $ finden, dass die Null-Wert wie folgt enthält:

db.properties.find({"purpose":"SALE,"address.city":{$in : [null, "City1", "City2"]}}); 

Diese für resutls zurückkehren beiden Städte, die Sie und leeren Wert wollen.

+0

Angenommen, wir verwenden eine Variable, um Wert zu erhalten, aber was ist, wenn der Benutzer überhaupt keinen Wert eingibt. Immerhin ist es für den Voraussuchungszweck, er kann den Wert eingeben oder nicht, aber wenn er den Wert eingibt, müssen wir nach den Daten des Zweckverkaufs des Benutzers fragen, den Stadtnamen eingeben. db.properties.find ({"Zweck": "VERKAUF," address.city ": req.body.city) .pretty() – Sohail

Verwandte Themen