Я получил коллекцию блог, где посты встраиваются в:
db.blogs.insert({
name: 'Smashing Magazine',
url: 'http://www.smashingmagazine.com/',
posts: [{
date: new Date('2013-05-10'),
title: 'How To Avoid Duplicate Downloads In Responsive Images',
url: 'http://mobile.smashingmagazine.com/2013/05/10/how-to-avoid-duplicate-downloads-in-responsive-images/',
tags: ['Responsive Design', 'Techniques']}]
});
Я хотел бы выполнить запрос, который возвращает все сообщения с дополнительным логическим полем, которое представляет, если определенный тег существует или нет для каждого сообщения. Это то, что я пробовал и не смог:
db.blogs.aggregate(
{$unwind: "$posts"},
{$project: {
name: 1,
date: "$posts.date",
title: "$posts.title",
// isResponsiveDesign should be true or false based on if the post is tagged as "Responsive Design" or not
isResponsiveDesign: {$and: [{"$posts.tags": 'Responsive Design'}]}
}}
);
Каков правильный способ написания этого запроса?
Спасибо, Джон, это помогло мне понять агрегацию немного больше. – katranci