Как использовать поле Wild в mongoDB? - PullRequest
0 голосов
/ 27 ноября 2018

Может ли кто-нибудь помочь мне в извлечении записей, содержащих «Австралия» в качестве страны, в то время как мы не знаем ключей (дат) в карте даты в запросе Монго.

Мои образцы данных ....

`{
    "_id" : ObjectId("5bfbdf1f123ee9f1b2bb82e0"),
    "fruit" : "apple",
    "datemap" : {
        "11/26/2018" : [ 
            {
                "_id" : "bbc2bb53-b7fe-43ec-9e88-38efbd69c345",
                "country" : "Denmark"
            }
        ],
            "11/27/2018" : [ 
            {
                "_id" : "bbc2bb53-b7fe-43ec-9e88-38efbd68c345",
                "country" : "Norway"
            }
        ],
            "11/28/2018" : [ 
            {
                "_id" : "bbc2bb54-b7fe-43ec-9e88-38efbd68c345",
                "country" : "Australia"
            }
        ]
    }
},
{
    "_id" : ObjectId("5bfbdf1f123ee9f1b2bb8245"),
    "fruit" : "Orange",
    "datemap" : {
        "11/26/2018" : [ 
            {
                "_id" : "bbc2bb53-b7fe-43ec-9e88-38efbd69c345",
                "country" : "Brazil"
            }
        ],
            "11/29/2018" : [ 
            {
                "_id" : "bbc2bb53-b7fe-43ec-9e88-38efbd68c345",
                "country" : "England"
            }
        ],
            "11/30/2018" : [ 
            {
                "_id" : "bbc2bb54-b7fe-43ec-9e88-38efbd68c345",
                "country" : "Australia"
            }
        ]
    }
}`

Заранее спасибо ....

1 Ответ

0 голосов
/ 27 ноября 2018

Вы можете использовать $objectToArray, чтобы преобразовать неизвестные ключи в пару k v и затем положить $match состояние.

Что-то вроде

db.collection.aggregate([
  { "$addFields": { "country": { "$objectToArray": "$datemap" } } },
  { "$match": { "country.v.country": "Australia" } },
  { "$project": { "country": 0 }}
])
...