Mongodb имеет агрегат и оператор $ out, которые позволяют сохранять подмножество в новой коллекции. Ниже приведены подробности:
$ out Берет документы, возвращенные конвейером агрегации, и записывает их в указанную коллекцию.
- Операция $ out создает новую коллекцию в текущей базе данных, если она еще не существует.
- Коллекция не видна до завершения агрегации.
- В случае сбоя агрегации MongoDB не создает коллекцию.
Синтаксис:
{ $out: "<output-collection>" }
Пример
Сборник книг содержит следующие документы:
{ "_id" : 8751, "title" : "The Banquet", "author" : "Dante", "copies" : 2 }
{ "_id" : 8752, "title" : "Divine Comedy", "author" : "Dante", "copies" : 1 }
{ "_id" : 8645, "title" : "Eclogues", "author" : "Dante", "copies" : 2 }
{ "_id" : 7000, "title" : "The Odyssey", "author" : "Homer", "copies" : 10 }
{ "_id" : 7020, "title" : "Iliad", "author" : "Homer", "copies" : 10 }
Следующая операция агрегирования поворачивает данные в коллекции книг, чтобы заголовки были сгруппированы по авторам, а затем записывает результаты в коллекцию авторов.
db.books.aggregate( [
{ $group : { _id : "$author", books: { $push: "$title" } } },
{ $out : "authors" }
] )
После операции собрание авторов содержит следующие документы:
{ "_id" : "Homer", "books" : [ "The Odyssey", "Iliad" ] }
{ "_id" : "Dante", "books" : [ "The Banquet", "Divine Comedy", "Eclogues" ] }
В заданном вопросе используйте следующий запрос, и вы получите новую коллекцию с именем 'col_20120105' в вашей базе данных
db.products.aggregate([
{ $match : { date : "20120105" } },
{ $out : "col_20120105" }
]);