如何解决使用 Mongoose 查询对象数组
[
{
id: 123,"arrayvalue": [
{
id: 355,name: "jhon",job: true
},{
id: 155,name: "clarck",job: false
},{
id: 275,name: "orie",]
}
]
我目前正在使用 nodejs express
我希望输出是这样的
[
{ id : 123,"arrayvalue": [
{
"id": 355,"job": true,"name": "jhon"
},{
"id": 275,"name": "orie"
}
]
}
]
找了很多地方都没找到,希望对项目有帮助。你可以帮忙
我使用:“猫鼬”:“^5.12.2”
解决方法
选项 - 1
演示 - https://mongoplayground.net/p/z1BwqmFh7Nq
db.collection.aggregate([
{ $unwind: "$arrayvalue" },// break into individual documents
{ $match: { "arrayvalue.job": true } },// match query
{
$group: { // join the document back
_id: "$_id",arrayvalue: { $push: "$arrayvalue"}
}
}])
选项 - 2
如果你想用 JS 来做:-
const data = [{
id: 123,"arrayvalue": [{
id: 355,name: "jhon",job: true
},{
id: 155,name: "clarck",job: false
},{
id: 275,name: "orie",]
}]
const arr = data.map((d) => {
if (d.arrayvalue) {
d.arrayvalue = d.arrayvalue.filter(e => e.job === true);
}
return d;
});
console.log(arr);
var obj ={
id : 123,arrayvalue : [
{
id : 355,name : "jhon",job : true
},{
id : 155,name : "clarck",job : false
},{
id : 275,name : "orie",]
};
var response = {};
for (var i = 0; i < obj.arrayvalue.length; i++) {
if (obj.arrayvalue[i].job) {
response[i] = obj.arrayvalue[i];
}
}
console.log(response);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。