2015-04-30 1 views
0

У меня есть набор MongoDB документов со следующей структурой:MongoDb - Запрос для конкретного поддокументе

{ 
    "_id" : NUUID("58fbb893-dfe9-4f08-a761-5629d889647d"), 
    "Identifiers" : { 
     "IdentificationLevel" : 2, 
     "Identifier" : "extranet\\[email protected]" 
    }, 
    "Personal" : { 
     "FirstName" : "Test", 
     "Surname" : "Test" 
    },  
    "Tags" : { 
     "Entries" : { 
      "ContactLists" : { 
       "Values" : { 
        "0" : { 
         "Value" : "{292D8695-4936-4865-A413-800960626E6D}", 
         "DateTime" : ISODate("2015-04-30T09:14:45.549Z") 
        } 
       } 
      } 
     } 
    } 
} 

Как я могу сделать запрос с Монго оболочкой, которая находит все документы с определенным «Value» (например, {292D8695-4936-4865-A413-800960626E6D} в пути Tag.Entries.ContactLists.Values?

структура, к сожалению, блокируется Sitecore, так что это не варианты, чтобы использовать другую структуру.

ответ

0

Как ваша структура сбора образцов показывает Values является объектом, он содержит только один Value. Также вы должны проверить на Value, так как он содержит дополнительную палитру. Если вы хотите получить Value от данной структуры попробовать следующий запрос:

db.collection.find({ 
"Tags.Entries.ContactLists.Values.0.Value": "{292D8695-4936-4865-A413-800960626E6D}" 
}) 
+0

Я думал, что я пробовал, но, видимо, у меня были некоторые ошибки в моем запросе. Оно работает! – pwind

+0

Также вы не должны использовать динамические клавиши типа '0'. Это не удобно для написания запросов. – Vishwas

+0

Я знаю - это Sitecore, который генерирует данные, так что, к сожалению, я не могу контролировать структуру – pwind