Я знаю, что Multikeys позволяет эффективно находить объекты, у которых есть массив как поле, где в этом массиве присутствует определенное значение.В MongoDB вы можете индексировать поле для поиска объектов, которые не имеют значения в массиве?
Например, можно сохранить объект:
{
"ar":["book","cat"]
}
И затем, при условии, что поле «ар» индексируется, вы могли бы сказать:
db.blah.find({"ar":"cat"})
И это будет эффективно найти выше объект.
Однако, было бы что-то вроде этой работы:
db.blah.find({"ar":{$not : "cat"}})
Здесь я хотел бы, чтобы найти все объекты, где «ар» массив делает не содержат «кошку». Будет ли этот запрос работать, и если он будет работать, будет ли он эффективным? (т. е. использовал бы индекс в поле «ar»?)
Идея состоит в том, что «кошка» появится во всех, кроме нескольких элементов. При этом проблема, о которой вы ссылаетесь, относится только к простому «не равному» в поле, она не относится к «не содержит» в массиве. – sanity