使用subArray中的条件进行搜索并使用nodeJS和NeDb获得结果

问题描述:

我很沮丧两天,因为我是nodeJS和JSon中的新手。 与我的英语不好,我有一个案例在子数据中搜索数据,并把结果放入浏览器。 这是我的代码:使用subArray中的条件进行搜索并使用nodeJS和NeDb获得结果

var doc = [{ 
    "name": "yadi", 
    "hobby": [{ 
    "home": "watch news", 
    "bed_room": "read comics" 
     }, { 
    "home": "watch ufc", 
    "bed_room": "eat candy" 
     }] 
}, 
    "name": "dony", 
    "hobby": [{ 
    "home": "sleep", 
    "bed_room": "eat dog food" 
     }, { 
    "home": "watch disney", 
    "bed_room": "breathing" 
     }] 
}]; 
var db = new Nedb();db.insert(doc, function(err, newDoc) { 
console.log(JSON.stringify(newDoc, null, ' ')); 
//search data 
db.find({ 
    "name": "yadi" 
    }, { 
    "hobby": { 
     $elemMatch: { 
     "home": "watch news" 
     } 
    } 
    }, function(err, docs) { 

    console.log ("RESULT "+JSON.stringify(docs, null, ' ')); 

}) 
}) 

我怎么能得到这个结果的数据?

"hobby": [{ 
    "home": "watch news", 
    "bed_room": "read comics" 
     }] 
+0

你面临什么问题?有什么错误? – sidgate

+0

我无法获得具有特定标准的数据子阵列 –

+0

您是否找到解决方案?我很感兴趣。 – Gilsdav

以下应该工作。除了在这里和那里的一些括号以及投影中的"_id": 0之外,基本上不会缺少很多东西。

var doc = [{ 
    "name": "yadi", 
    "hobby": [{ 
     "home": "watch news", 
     "bed_room": "read comics" 
    }, { 
     "home": "watch ufc", 
     "bed_room": "eat candy" 
    }] 
}, { 
    "name": "dony", 
    "hobby": [{ 
     "home": "sleep", 
     "bed_room": "eat dog food" 
    }, { 
     "home": "watch disney", 
     "bed_room": "breathing" 
    }] 
}]; 

var db = new Nedb(); 
db.insert(doc, function(err, newDoc) { 
    console.log(JSON.stringify(newDoc, null, ' ')); 
}); 

//search data 
db.find({ 
    "name": "yadi" 
}, { 
    "_id": 0, // exclude _id 
    "hobby": { 
     $elemMatch: { 
      "home": "watch news" 
     } 
    } 
}, function(err, docs) { 
    console.log ("RESULT "+JSON.stringify(docs, null, ' ')); 
});