2016-02-23 2 views
0

Я следую MongoDB документации для C# & оболочки команды, чтобы понять find() для $and для ресторанов например. Однако после проблема, которую я заметил:

ar builder = Builders<BsonDocument>.Filter; var filter = builder.Eq("cuisine", "Italian") & builder.Eq("address.zipcode", "10075");

фильтрует рестораны коллекции, однако, когда я меняю фильтр, как:

var filter = builder.Eq("borough", "Manhattan") & builder.Eq("cuisine", "American");

Это не возвращает ни одной записи, как я могу видеть комбинацию из этих двух представлены в ресторанов коллекции.

Shell команда, которая не работает: db.restaurants.find({ $and: [ {borough: "Queens" }, { cuisine: "American" } ] })

Любые подсказки?

ответ

0

В этом случае не нужно использовать операторы $ и.

db.restaurants.find({borough: "Queens", cuisine: "American"})

использовать только $ и оператора, когда вам нужно указать более чем одно условие для того же поля (то есть: db.restaurants.find({ $and: [ {score:{$gte:5}}, {score:{$lte:10}} ] }))

+1

К сожалению, один вы предложили также не работает, как я попробовал это раньше. Он просто показывает мне снова командное приглашение. '> db.restaurants.find ({р-н: "Queens", кухня: "американская"}) >' – Kenz

+1

Если вы используете restaurants.json наборы данных (https://raw.githubusercontent.com/ mongodb/docs-assets/primer-dataset/dataset.json), обратите внимание, что за «американской» кухней следует пустое место. Попробуйте следующее: 'db.restaurants.find ({borough:« Queens », кухня:« American »})' или 'db.restaurants.find ({город:« Queens », кухня: {$ regex:/^ American /}}) ', чтобы соответствовать тем документам, которые' кухня', которые начинаются с 'American' – nach0

Смежные вопросы