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 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?