微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Mongoose 查询对象数组

如何解决使用 Mongoose 查询对象数组

假设我在猫鼬中有这样一个集合,我有这样一个模板

[
  {
    id: 123,"arrayvalue": [
      {
        id: 355,name: "jhon",job: true
      },{
        id: 155,name: "clarck",job: false
      },{
        id: 275,name: "orie",]
  }
]

我目前正在使用 nodejs express

我想要做的就是获取仅值为 true 的对象。

我希望输出是这样的

[
  { id : 123,"arrayvalue": [
      {
        "id": 355,"job": true,"name": "jhon"
      },{
        "id": 275,"name": "orie"
      }
    ]
  }
]

找了很多地方都没找到,希望对项目有帮助。你可以帮忙

我使用:“猫鼬”:“^5.12.2”

解决方法

选项 - 1

演示 - https://mongoplayground.net/p/z1BwqmFh7Nq

$unwind

$push

$group

$match

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 举报,一经查实,本站将立刻删除。