我有这样的文件-
{
"Details": "WorkProfile" : [
{
"Company" : "UPS",
"JobTitle" : "Preload Package Handler",
"JobSkills" : {
"CommonSkills" : [
ObjectId("5ad5ab860b94c96c738e911e")
],
"OtherSkills" : [
ObjectId("5ad5ab860b94c96c738e9208")
]
}
},
{
"Company" : "L&L Tent and Party",
"JobTitle" : "Delivery Driver/ Tent Installation",
"JobSkills" : {
"CommonSkills" : [
ObjectId("5ad5ab860b94c96c738e9227")
],
"OtherSkills" : [ ]
}
},
{
"Company" : "All Pro Movers",
"JobTitle" : "Mover"
},
{
"Company" : "Carolina Farmin",
"JobTitle" : "Head of Cullinary"
}
],
}
我要去拿
OtherSkills
对于中的每个子文档
WorkProfile
db.Collection.aggregate([{$match: {"DocId": "669f4a8f-13cd-4780-8115-e3f29b0d9b4f"}}, {$project: {"JobSkills": "$Details.WorkProfile.JobSkills.OtherSkills"}}]).pretty()
{
"_id" : ObjectId("5ad5ab89af2808b739ba6aac"),
"JobSkills" : [
[
ObjectId("5ad5ab860b94c96c738e9208")
],
[ ]
]
}
现在我想为字段设置一个默认值,如果该字段在子文档中不存在。为此我试着用
$ifNull
像这样的命令
db.ResumeParsedData.aggregate([{$match: {"DocId": "669f4a8f-13cd-4780-8115-e3f29b0d9b4f"}}, {$project: {"JobSkills": {$ifNull: ["$ResumeDetails.WorkProfile.JobSkills.OtherSkills", "null"]}}}]).pretty()
{
"_id" : ObjectId("5ad5ab89af2808b739ba6aac"),
"JobSkills" : [
[
ObjectId("5ad5ab860b94c96c738e9208")
],
[ ]
]
}
我期待上述文件的输出-
{
"_id" : ObjectId("5ad5ab89af2808b739ba6aac"),
"JobSkills" : [
[
ObjectId("5ad5ab860b94c96c738e9208")
],
[ ],
"null",
"null"
]
}