У меня может быть фундаментальное непонимание того, как работают пайплайны фреймворка агрегации mongodb. Я ожидаю, что каждый шаг потребляет результат предыдущего шага. Вот конкретный пример использования коллекции образцов, представленной по адресу http://media.mongodb.org/zips.json< /а> :
> db.zipcodes.aggregate({$match:{state:"CA"}});
дает такие результаты.
{
"city" : "TRUCKEE",
"loc" : [
-120.295031,
39.319321
],
"pop" : 199,
"state" : "CA",
"_id" : "96162"
}
Все идет нормально. Затем я решил добавить еще один шаг, чтобы получить проекцию вышеизложенного, запустив:
> db.zipcodes.aggregate({
$match:{state:"CA"},
$project: {city: 1, pop: 1, state: 1}
});
Проекция работает, но игнорирует первый шаг $match. Он основан на исходном вводе и включает документы, в которых состояние != CA:
{
"city" : "THAYNE",
"pop" : 505,
"state" : "WY",
"_id" : "83127"
}
Мои ожидания неверны или я смотрю на синтаксическую проблему, не замечая ее? Я использую версию 2.2.0:
> db.version();
2.2.0
Примеры запросов, кажется, работают.
Заранее спасибо.