這是我需要添加到集合中的資料
let data = {
'a':'data a',
'ab':'data a',
'b':'data b',
'c':'data c'
}
這是我的收集資料:
{
name:'xyz',
age:'100',
arr: ['a','ab']
}
我想要的是:
{
name:'xyz',
age:'100',
arr: ['a','ab'],
data:'data a' //get this from arr first element, and that is key in data object that's value here
}
有人可以幫我用貓鼬寫這個查詢嗎?
uj5u.com熱心網友回復:
您需要使用以下管道階段和運算子的聚合操作:
$addFields:向管道檔案添加一個新欄位$objectToArray:將物件/檔案轉換為陣列。這是檢查匹配陣列元素的索引所必需的$arrayElemAt: 獲取指定陣列索引處的元素$indexOfArray:獲取指定值第一次出現的陣列索引(從零開始)
您的最終管道應如下所示:
let data = {
'a':'data a',
'ab':'data a',
'b':'data b',
'c':'data c'
};
db.collection.aggregate([
{ $addFields: {
data: { $objectToArray: data },
} },
{ $addFields: {
data: {
$arrayElemAt: [
'$data.v',
{
$indexOfArray: [
'$data.k',
{ $first: '$arr' }
]
}
]
}
} }
])
要么
db.collection.aggregate([
{ $addFields: {
data: { $objectToArray: data },
} },
{ $addFields: {
data: {
$arrayElemAt: [
'$data.v',
{
$indexOfArray: [
'$data.k',
{ $arrayElemAt: ['$arr', 0] }
]
}
]
}
} }
])
蒙戈游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/456254.html
上一篇:將字典串列的字典轉換為資料框
