Монго запросить возврат документов, в которых под-документ имеет несколько совпадений - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь вернуть все документы в моей коллекции, где

Fields.fields[x].subFields.field_1 = A

и

Fields.fields[x].subFields.field_2 = B.

Я могу сопоставить его, если подполя не существуют

например. с учетом документа

{ 
  "_id" : "4", 
  "Fields" : { "_id" : "1", 
               "Type" : "Person", 
                "fields" : [{ "_id" : "1", 
                              "Field_1" : "a", 
                              "Field_2" : "b", 
                              "Field_3" : "c" 
                           }] 
             } 
}

Я могу сопоставить это, используя

{ 
  "Fields.fields" : { "$elemMatch" : { "Field_1" : "a", 
                                       "Field_2" : "b" 
                                     } 
                    } 
}

однако, если я толкну эти поля еще одно вниз по дереву, я не могу понять, как заставить его соответствовать.

{ "_id" : "10", 
  "Fields" : { "_id" : "1", "Type" : "Person", 
               "fields" : [{ "_id" : "1", 
                             "subFields" : { "Field_1" : "a", 
                                             "Field_2" : "b", 
                                             "Field_3" : "c" }
                                           }
                          }] 
             } 
}

Я пытался без удачи

 { 
  "Fields.fields.subFields" : { "$elemMatch" : { "Field_1" : "a", 
                                                 "Field_2" : "b" 
                                               } 
                              } 
 }

также пробовал

 { 
  "Fields.fields" : { "$elemMatch" : { subFields: {"Field_1" : "a", 
                                                   "Field_2" : "b" 
                                                   } 
                                     }
                    } 
 }

Возможно ли это? Если так, как мне это сделать. У меня нет большого контроля над форматом документа, и я бы не стал его перебирать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...