Скажет, у меня есть следующий:
this.aggregate(
{$unwind: "$tags"},
{$match: {tags: {$in: pip.activity.tags}}},
{$group : {_id : '$_id',matches:{$sum:1}}},
{$project: { _id: 0,matches:1}},
{$sort: {matches:-1 }},
callback
);
как бы я идти о включении дополнительного «внешнее» ObjectId поля в результатах? например, если у меня есть следующие:
var otherField = new ObjectId('xxxxxxx');
this.aggregate(
{$unwind: "$tags"},
{$match: {tags: {$in: pip.activity.tags}}},
{$group : {_id : '$_id',matches:{$sum:1}}},
{$project: { _id: 0,matches:1,otherField:otherField}}, <-- include otherField
{$sort: {matches:-1 }},
callback
);
Возможно ли это или я должен использовать в forLoop или MapReduce для этого конкретного шага? Я ищу что-то действительно эффективное.
Спасибо Nuk Nuk, я дал это, и это сработало :) Надеюсь, в будущей версии есть что-то вроде менее обходного пути, еще лучше, чем MapReduce! –
Возможность указать произвольное постоянное значение BSON в проекте $ кажется хорошим запросом - возможно, стоит добавить JIRA или проголосовать, если она уже существует. есть несколько дискуссий над оператором $ literal - возможно, стоит того. –