douju1968 2017-04-06 13:38
浏览 215
已采纳

如何在mongoDb中从此树中获取对象?

How do I get an object from this tree? :

{
    "_id" : ObjectId("33b97aa654bce61322002559"),
    "name" : "Test",
    "children" : [
        "_id" : ObjectId("44b97aa654bce61322002559"),
        "name" : "Test Children",
        "children" : [
            "_id" : ObjectId("55b97aa654bce61322002559"),
            "name" : "Test Children Children",
            "children" : "",
            "products" : [
                "_id" : ObjectId("55b97aa654bce61322002559"),
                "name" : "Product 1" //I need this object
                "attrib" : [
                    "sale" : 1,
                    "new" : 1,
                    "instock" : 1,
                ]
            ],
            "products" : ""
        ]
    ],
    "products" : ""
}

Levels can be any number.

  • children
  • -children
  • --children
  • ---children
  • ----children

    $arr = Categories::findOne(['_id' => '55b97aa654bce61322002559']); debug($arr);

Maybe I'm not shaping the structure db correctly? Thank you.

  • 写回答

1条回答 默认 最新

  • dongzhuang6417 2017-04-06 14:16
    关注
    //return an array of objects according to key, value, or key and value matching
    function getObjects(obj, key, val) {
        var objects = [];
        for (var i in obj) {
            if (!obj.hasOwnProperty(i)) continue;
            if (typeof obj[i] == 'object') {
                objects = objects.concat(getObjects(obj[i], key, val));
            } else
            //if key matches and value matches or if key matches and value is not passed (eliminating the case where key matches but passed value does not)
            if (i == key && obj[i] == val || i == key && val == '') { //
                objects.push(obj);
            } else if (obj[i] == val && key == ''){
                //only add if the object is not already in the array
                if (objects.lastIndexOf(obj) == -1){
                    objects.push(obj);
                }
            }
        }
        return objects;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题