Node.js mongoose: как использовать методы запроса .in и.

StackOverflow https://stackoverflow.com/questions/4523175

  •  12-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь обернуть голову вокруг мангуза, но мне трудно найти какую -либо документацию для некоторых из более продвинутых вариантов запросов, в частности, методов. В и. Что такое синтаксис для сортировки, например, человека по возрасту?

db.model("Person").find().sort(???).all(function(people) { });

Затем, допустим, я хочу найти фильм, основанный на жанре, где в фильме может быть много жанров (в данном случае, массив струн). Предположительно, я бы использовал функцию .in для этого, но я не уверен, каким будет синтаксис. Или, может быть, мне вообще не нужно использовать метод .in ...? В любом случае, я потерялся.

db.model("Movie").find().in(???).all(function(movies) { });

У кого -нибудь есть идеи? Или даже лучше, ссылка на какую -то комплексную документацию?

Спасибо!
Крис

Это было полезно?

Решение

Да, документация по мангузе отстает от некоторых из этих вещей, и, к сожалению, решение не очень интуитивно понятно (поставляется с территорией при использовании чего -то еще проходящего через быстрое развитие, а API изменяется на пути к версии 1.0)

Между тем, это сделает то, что вы ищете, с точки зрения сортировки:

db.model("Person").find().sort([['age','ascending']]).all(function(people) { });

Что касается вопроса о более сложных вложенных отношениях, если вы еще этого не сделали, вы можете начать с превосходно Документация MongoDB, в частности, статьи на Схема дизайн, Расширенные запросы а также Точечная нотация (достигая объектов). Анкет Знание MongoDB внутри и снаружи должно сделать навигацию по мгновенным частям монгуаза.

Вот пример для поиска фильмов по жанру, используя $ in:

db.model("Movie").find({ 'genres': { $in: ['Horror','Comedy'] } }).all(function(movies) { });

Другие советы

Ответ Даниэля не сработал для меня. Я считаю, что API изменился с 1.0.14 (http://groups.google.com/group/mongoose-orm/browse_thread/thread/cc77914021940e73/34fc6f45938a2242?

Это то, что сработало для меня:

db.model("Person")
  .find()
  .sort('age', 1)
  .execFind(function(err, people) { 
 });
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top