Запросить вложенный массив в MongoDb - PullRequest
3 голосов
/ 09 марта 2011

Я хотел бы получить документы по наличию строки во вложенном массиве. Например, данные (представляющие анализ зависимости предложения) выглядят следующим образом:

{'tuples': [['xcomp', 'multiply', 'using'], 
            ['det', 'method', 'the'], 
            ['nn', 'method', 'foil'], 
            ['dobj', 'using', 'method']]}

Ближайшее решение, которое я нашел, предполагает, что ['nn', ...] - это вторая позиция списка списков tuples:

 db.c.find({'tuples.2.0' : 'nn'})

Есть ли способ расслабить фиксированное положение? Кортежи (не их содержимое) могут быть в любом порядке.

Во-вторых, было бы действительно здорово иметь возможность извлекать документы, которые имеют ['nn', 'method', X], что означает существительное «метод» в их анализе зависимостей.

Спасибо!

1 Ответ

4 голосов
/ 09 марта 2011

Понял!

db.c.find({'tuples' : {$elemMatch : {$all : ['nn']}}})
db.c.find({'tuples' : {$elemMatch : {$all : ['nn','method']}}})
...