gpt4 book ai didi

node.js - 通过在 Mongodb 中应用条件,使用 $find 查询嵌套对象

转载 作者:太空宇宙 更新时间:2023-11-04 00:00:30 24 4
gpt4 key购买 nike

这是我的 json 对象

{
"account_id" : "1",
"sections" : [
"name" : "sec1",
"label" : {
"label1" : "text1",
"label2" : "text2"
}
},
"name" : "sec2",
"label" : {
"label3" : "text3",
"label4" : "text4",
"label5" : "text5"
}
},
]
}

因此,在这个 json 中,我想查询扇区 = sec1 的标签对象。我使用了下面的代码,但它不起作用。

var getData = (db, query) => { 
return db
.collection(TABLE_NAME)
.find(query, { account_id: { sections: { label: 1 } } })
.toArrayAsync();
};

var dataList = (db, event) => {
let dataQuery = {
account_id: id,
'sections.name': event.params.section
};
return getData(db, dataQuery);
};

module.exports.getData = (event, cb) => {
return using(connectDatabase(), db => {
return dataList (db, event);
}).then(data => cb(null, responseObj(data, 200)), err =>
cb(responseObj(err, 500)));
};

有人可以帮助我吗?提前致谢。

最佳答案

尝试这样的事情。使用 $project,我们可以有选择地删除或保留字段,并且可以重新分配现有字段值并派生全新的值。投影标签名称后,执行$match以按名称提取文档。需要注意的一件事是,通过使用 $project,它将自动分配文档的 _id

    var dataList = (db, event) => {
return db
.collection(TABLE_NAME)
.aggregate([
{
$match: { account_id: your_id }
},
{
$unwind: '$sections'
},
{
$project:{labels:'$sections.label',name:'$sections.name'}
},
{
$match:{name:section_name}
}]).toArray();
};

关于node.js - 通过在 Mongodb 中应用条件,使用 $find 查询嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54924882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com