1. 程式人生 > >Mongo 關聯查詢、數組中的對象中的字段排序

Mongo 關聯查詢、數組中的對象中的字段排序

isod EDA get roo reg edate create cti obj

1.集合(Msg)

{
"_id" : "1",
"Name" : "jenny",
"Values" : [
{
"key" : "地址",
"value" : "x"
},
{
"key" : "愛好",
"value" : ""
}
],
"Relation":{
"Books":[
{"BookId":"2"}
]
}
"CreateUserName" : "jenny",
"LastOperateDate" : ISODate("2018-07-27T17:31:28.170+08:00")

}

{
"_id" : "3",
"Name" : "jenny1",
"Values" : [
{
"key" : "地址",
"value" : "a"
},
{
"key" : "愛好",
"value" : ""
}
],
"Relation":{
"Books":[
{"BookId":"2"}
]
}
"CreateUserName" : "jenny",
"LastOperateDate" : ISODate("2018-07-27T17:31:28.170+08:00")
}
{
"_id" : "2",
"Name" : "圖書",
"Values" : [
{
"key" : "出版地址",

"value" : "xxx區"
},
{
"key" : "出版時間",
"value" : ""
}
]
"CreateUserName" : "jenny",
"LastOperateDate" : ISODate("2018-07-27T17:31:28.170+08:00")
}

2.獲取作者及其所有圖書信息。並按Values內key排序

db.getCollection(‘Msg‘).aggregate([

{$addFields: { ValueObj: { $arrayToObject: { $map: { input: "$Values", as: "field", in: ["$$field.key", "$$field.value"] } } } } },

{$lookup:{from:"Msg",localField:"Relation.Book.BookId",foreignField:"_id",as:"Books"}},
{$addFields:{"ValueObj._id":"$_id","ValueObj.Values":"$Values","ValueObj.Books":"$Books"}},
{$replaceRoot:{newRoot:"$ValueObj"}},

{$sort:{"地址":-1}},

])

結果:

[

{

"地址":"x",

"愛好":"",

"_id":"1",

"Values" : [
{
"key" : "地址",
"value" : "x"
},
{
"key" : "愛好",
"value" : ""
}
],

"Books":[

{
"_id" : "2",
"Name" : "圖書",
"Values" : [
{
"key" : "出版地址",
"value" : "xxx區"
},
{
"key" : "出版時間",
"value" : ""
}

]

},

{

"地址":"a",

"愛好":"",

"_id":"3",

"Values" : [
{
"key" : "地址",
"value" : "a"
},
{
"key" : "愛好",
"value" : ""
}
],

"Books":[]

}

]

Mongo 關聯查詢、數組中的對象中的字段排序