2016-10-17 1 views
0

У меня есть набор данных со следующей структурой. Я покажу вам два документа.Mongo find() не возвращается для встроенных документов

{ 
    "business_id":"7vqhN9Ifq5DnaUkL3jyWGg", 
    "full_address":"1322 Pleasant View Rd\nMiddleton, WI 53562", 
    "hours":{ }, 
    "open":true, 
    "categories":[ 
     "Active Life", 
     "Golf Lessons", 
     "Golf", 
     "Fitness & Instruction" 
    ], 
    "city":"Middleton", 
    "review_count":4, 
    "name":"Pleasant View Golf Course", 
    "neighborhoods":[ 

    ], 
    "longitude":-89.536493, 
    "state":"WI", 
    "stars":4.0, 
    "latitude":43.0875811, 
    "attributes":{ 
     "Delivery":false, 
     "Good for Kids":true, 
     "Good For Groups":true, 
     "Good For":{ 
     "dessert":false, 
     "latenight":false, 
     "lunch":false, 
     "dinner":false, 
     "brunch":false, 
     "breakfast":false 
     } 
    }, 
    "type":"business" 
} 

Вот еще один документ:

{ 
    "business_id":"B0Vuwn6Hugc-0U5n31YBfg", 
    "full_address":"2550 Allen Blvd\nMiddleton, WI 53562", 
    "hours":{ 
     "Monday":{ 
     "close":"14:00", 
     "open":"06:00" 
     }, 
     "Tuesday":{ 
     "close":"14:00", 
     "open":"06:00" 
     }, 
     "Friday":{ 
     "close":"14:00", 
     "open":"06:00" 
     }, 
     "Wednesday":{ 
     "close":"14:00", 
     "open":"06:00" 
     }, 
     "Thursday":{ 
     "close":"14:00", 
     "open":"06:00" 
     }, 
     "Sunday":{ 
     "close":"13:00", 
     "open":"07:00" 
     }, 
     "Saturday":{ 
     "close":"14:00", 
     "open":"06:00" 
     } 
    }, 
    "open":true, 
    "categories":[ 
     "Bakeries", 
     "Food", 
     "American (Traditional)", 
     "Restaurants", 
     "Donuts" 
    ], 
    "city":"Middleton", 
    "review_count":25, 
    "name":"C's Restaurant Bakery and Coffee Shop", 
    "neighborhoods":[ 

    ], 
    "longitude":-89.48674, 
    "state":"WI", 
    "stars":4.0, 
    "latitude":43.102896, 
    "attributes":{ 
     "Take-out":true, 
     "Good For":{ 
     "dessert":false, 
     "latenight":false, 
     "lunch":false, 
     "dinner":false, 
     "brunch":false, 
     "breakfast":true 
     }, 
     "Noise Level":"average", 
     "Takes Reservations":false, 
     "Delivery":false, 
     "Ambience":{ 
     "romantic":false, 
     "intimate":false, 
     "touristy":false, 
     "hipster":false, 
     "divey":false, 
     "classy":false, 
     "trendy":false, 
     "upscale":false, 
     "casual":true 
     }, 
     "Parking":{ 
     "garage":false, 
     "street":false, 
     "validated":false, 
     "lot":true, 
     "valet":false 
     }, 
     "Has TV":false, 
     "Outdoor Seating":true, 
     "Attire":"casual", 
     "Alcohol":"none", 
     "Waiter Service":true, 
     "Accepts Credit Cards":true, 
     "Good for Kids":true, 
     "Good For Groups":true, 
     "Price Range":1 
    }, 
    "type":"business" 
} 

У меня есть AOUT +80000 документы в моей коллекции. Поля в атрибуте не одинаковы для каждого документа. Как я верну все документы, которые имеют «непринужденную атмосферу». Это то, что я пробовал:

db.yelp_dataset.find({"attributes.Ambience.casual" :"true"}) 

Однако я не получаю возвращаемые данные. В чем может быть проблема? Пожалуйста, помогите.

+5

Вы сравниваете его в строку ' "истинной"'. Вместо этого вы должны сравниваться с логическим 'true'. Попробуйте удалить кавычки вокруг «true», например 'db.yelp_dataset.find ({" attributes.Ambience.casual ": true})'. –

ответ

2

Вы сохраняете значение атрибута вложенного документа. Значение поля ASSIGN.casual как булево, а при поиске документа вы передаете значение как строку, поэтому данные не возвращаются.

Попробуйте

db.yelp_dataset.find({"attributes.Ambience.casual" :true}); 

вместо

db.yelp_dataset.find({"attributes.Ambience.casual" :"true"});