2017-10-09 1 views
1

MongoDB objet Structurerequêtes MongoDB avec des valeurs vides et non vides

{ 
    "_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 

Je veux interroger des données basées sur une chaîne vide et non vide par exemple

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

si entrer l'utilisateur « but "valeur mais n'entre pas la valeur" adresse.city "alors seulement les données doivent retourner qui est de but de vente et s'il y a une valeur pour" adresse.city "entrée par l'utilisateur par exemple

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

Maintenant, les données doivent être à des fins de vente de cette ville particulière.

En fait j'ai besoin de ce type de requête pour la recherche anticipée qui gère la valeur si vide ou non vide en $ et condition logique et j'ai une longue liste de possibilités pour interroger les données de mongodb.

+0

Cela ressemble beaucoup à https://stackoverflow.com/questions/42315649 –

Répondre

0

Vous pouvez avoir besoin d'une liste des villes à trouver après $ en qui inclut la valeur NULL comme ceci:

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

Cela renverra Resutls tant pour les villes que vous souhaitez et valeur vide.

+0

Supposons que nous utilisions une variable pour obtenir de la valeur, mais que se passe-t-il si l'utilisateur n'entre pas du tout de valeur? Après tout, c'est à des fins de recherche avancée, il peut ou ne peut pas entrer la valeur, mais s'il saisit la valeur, nous devons interroger pour les données de fin de vente de l'utilisateur entrer le nom de la ville. db.properties.find ({"purpose": "VENTE," adresse.city ": req.body.city) .pretty() – Sohail