2015-09-02 2 views
0

схемы: {названия: '', автор: '', должность: '', комментарии: [{автор: '', комментарии: ''}]}

Будет ли 2 автор s в новом документе в результате $ Расслабьтесь: «$ comments»? Как указать новое имя поля comments.author?

ответ

2

$unwind выводит документ для каждого элемента массива. Каждый новый документ заменяет массив на один из элементов массива. В этом случае, поскольку это массив встроенных документов, вывод нового поля будет встроенным документом, который называется comments, и с полями author и comments.

Таким образом, конфликта не будет, так как поле author будет внедрено в поле comments.

Самый простой способ увидеть это, чтобы попробовать это сами:

db.test.aggregate([{ $unwind : "$comments" }]); 

Выходы:

{ 
    "_id" : ObjectId("55e76c41ca8a53ab3b4e827b"), 
    "title" : "", 
    "author" : "", 
    "post" : "", 
    "comments" : { "author" : "", "comments" : "" } 
} 

Если вы действительно хотели, чтобы сгладить внедренный документ и переименуйте поле, вы бы добавить $project stage в конвейер агрегации после $unwind.

Смежные вопросы