Я использую MongoDB для хранения группы информации, и мне нужно искать значения в индексированном массиве.
Вот схема:
{ "common_name" : { "name" : "thename", "type" : "thetype" } }
Вдокумент, но это единственный, который я ищу.
Итак, я подумал, что-то вроде этого будет работать: (в оболочке)
db.collection.find({common_name:{$in:"thename"}})
Но я ничего не получаю обратно.
Это похоже на то, что здесь делается: http://www.php.net/manual/en/mongo.queries.php - Но я не могу ничего вернуть.
Я пытался
db.collection.find({"common_name.name":"thename"}})
и он работает, как и ожидалось, но при поиске по нескольким узлам в индексе (до 4) он может быть уродливым, в основном определяя $ или индекс для каждой подкатегории и увеличивая время запроса в четыре раза.Поскольку это приводит в действие автозаполнение, я не могу этого сделать.
Как ни странно, следующее также не возвращает никаких документов:
db.collection.find({"common_name":{"name":"thename"}})
Что, на мой взгляд, точното же самое, что и вышеупомянутый запрос.
Я довольно новичок в Mongo, так что, может быть, мне здесь не хватает чего-то большого?
Есть идеи, как получить самый быстрый доступ к этомуданные (используя привязанное регулярное выражение)?
Я мог бы просто использовать реляционную таблицу, но разве это не противоречит цели системы NoSQL, такой как Mongo?