Arrays 获取mongo中arrayfield中每个子文档的字段的默认值
我有这样的文件-Arrays 获取mongo中arrayfield中每个子文档的字段的默认值,arrays,mongodb,aggregation-framework,Arrays,Mongodb,Aggregation Framework,我有这样的文件- { "Details": "WorkProfile" : [ { "Company" : "UPS", "JobTitle" : "Preload Package Handler", "JobSkills" : {
{
"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"
}
],
}
我想为WorkProfile
部分中的每个子文档获取OtherSkills
。我试过以下方法
db.Collection.aggregate([{$match: {"DocId": "669f4a8f-13cd-4780-8115-e3f29b0d9b4f"}}, {$project: {"JobSkills": "$Details.WorkProfile.JobSkills.OtherSkills"}}]).pretty()
{
"_id" : ObjectId("5ad5ab89af2808b739ba6aac"),
"JobSkills" : [
[
ObjectId("5ad5ab860b94c96c738e9208")
],
[ ]
]
}
现在,如果该字段在该子文档中不存在,我想为该字段设置一个默认值。为此,我尝试使用这样的命令
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"
]
}您需要使用
产出:
{
"_id" : ...,
"JobSkills" : [
[
ObjectId("5ad5ab860b94c96c738e9208")
],
[ ],
"null",
"null"
]
}
{
"_id" : ...,
"JobSkills" : [
[
ObjectId("5ad5ab860b94c96c738e9208")
],
[ ],
"null",
"null"
]
}