Как выбрать документы на основе _id и другого поля в Mongo? - PullRequest
0 голосов
/ 02 июня 2018

Я довольно новичок в Mongo, у меня есть коллекция

{ 
    "_id" : "297637", 
    "polygon" : {
        "1" : {
            "direction5" : {
                "lat" : 40.73279100000004, 
                "lon" : -74.027161, 
                "delivery_fee" : NumberInt(300), 
                "delivery_estimate" : NumberInt(45), 
                "delivery_offered_to_diner_location" : false
            }
        }
    }
}

, и я хотел запросить, чтобы выбрать все документы, для которых _ID = 297637 И POLYGON = 1 означают выбрать все строки "direction1", "direction2"," direction3 "и т. д. внутри POLYGON = 1

Я пытался

{ $and: [ { "_id": "297637" }, { "polygon": "1" } ] }

Но он не показывает никаких результатов.

Возможно, потому что polygon и 1 это тип Object или что?

enter image description here

1 Ответ

0 голосов
/ 02 июня 2018

Вы не можете использовать { "polygon": "1" }, потому что этот оператор проверяет, равняется ли polygon поле "1", тогда как в вашем документе это вложенный объект с одним полем "1".

В MongoDB все поля _id уникальны, что означает, что db.col.find({_id: "297637"}) даст вам только один документ.Однако, если вы все еще хотите проверить polygon и получить ноль или один результат, вы можете проверить, существует ли путь "polygon.1" в вашем документе, используя оператор $ существующие .

db.col.find({_id: "297637", "polygon.1": { $exists: true } })

В качестве альтернативы выможно проверить, является ли polygon.1 объект, используя оператор $ type :

db.col.find({_id: "297637", "polygon.1": { $type: "object" } });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...