如果我有以下Mongo文件
{
"_id" : ObjectId("59e6cb45a902f0f3ea1e35cc"),
"title" : "Book 1",
"authors" : [
{
"name" : "Adam",
"birthday" : ISODate("1982-03-22T22:41:19.198Z")
}
]
}
如何使用$dateToString
预测作者的生日。现在我有
db.getCollection('coll')
.aggregate([
{$match: {}},
{$project:
{
title: 1,
authors: {
name: 1,
birthday: {
$dateToString: { format: "%m", date: "$birthday" }
}
}
}
}
])
但是$birthday
找不到当前作者的生日,而是返回null
。而且我已经尝试了我能想到的所有其他可能性。全部错误输出或返回null。
答案 0 :(得分:2)
使用$map
进行此类操作。它的用途是重塑数组,一些$project
符号是一个相对较新的东西,只有有限的应用程序:
db.getCollection('coll').aggregate([
{ "$match": {}},
{ "$project": {
"title": 1,
"authors": {
"$map": {
"input": "$authors",
"as": "item",
"in": {
"name": "$$item.name",
"birthday": {
"$dateToString": { "format": "%m", "date": "$$item.birthday" }
}
}
}
}
}}
])
确保运算符应用于正在处理的数组的特定元素,并返回新数组。