我有这样的db结构:
{
"_id" : ObjectId("5a702c1434ddce0015a9fc2b"),
"create_on_fmt" : "20180130082556",
"create_on" : ISODate("2018-01-30T08:25:56.222Z"),
"type" : 1,
"code" : "3YFZZ",
"handled_by" : {
"644e1dd7-2a7f-18fb-b8ed-ed78c3f92c2b" : {
"email" : "abca@email.com",
"update_on" : ISODate("2018-02-05T15:43:59.612Z"),
"update_on_fmt" : "20180205154359"
}
}
}
当handled_by.XXX.update_on
是自动生成且价值不完全时,如何在没有644e1dd7-2a7f-18fb-b8ed-ed78c3f92c2b
的情况下返回结果?
我曾尝试db.test.find({"code" : "3YFZZ"}, {'handled_by./%/.update_on':0}).pretty()
但未成功。
答案 0 :(得分:1)
您可以使用$objectToArray在此属性上使用$ project(丢弃它),然后执行$arrayToObject的反向操作以恢复原始形状。试试这个:
db.test.aggregate([
{
$addFields: {
handled_by: {
$objectToArray: "$handled_by"
}
}
},
{
$project: {
"handled_by.v.update_on": 0
}
},
{
$addFields: {
handled_by: {
$arrayToObject: "$handled_by"
}
}
}
])