1
我想要使用Nodejs,mongoose和MongoDB來減少地圖操作。 我有一個相當平坦的模式結構,我想獲得每個'named'對象的值/日期對列表。地圖縮小功能顯然有些問題,但我看不到如何修復它以獲取我之後的格式。使用mongoosejs縮小地圖
MongoDB的文檔架構如下:
{ "name" : "object1", "value" : "123", "date" : "2013-01-02 01:00:00" }
{ "name" : "object1", "value" : "456", "date" : "2013-01-02 02:00:00" }
{ "name" : "object2", "value" : "123", "date" : "2013-01-02 02:00:00" }
的地圖上減少我用我的貓鼬架構功能如下:
var o = {};
o.map = function() {
emit(
{ 'name': this.name },
{'data': [ { 'value': this.value, 'date': this.date} ] }
)
}
o.reduce = function (k, vals) {
var reduced = {'data': []};
for (var i in vals) {
reduced.data.push(vals[i]);
}
return reduced;
}
this.mapReduce(o, function(err, model) {
if(err) console.log(err);
model.find().exec(cb);
});
我想看到的是一些JSON沿線
[
{
"name": "object1",
"data": [
{
"value": "123",
"date": "2013-01-02T01:00:00.123456"
},
{
"value": "456",
"date": "2013-01-02T02:00:00.123456"
},
]
},
{
"name": "object2",
"data": [
{
"value": "123",
"date": "2013-04-22T13:10:03.893018"
},
...
]
},
...
但我最終得到了這個嵌套的混亂!有人能給我一個指針,指出我錯過了什麼!
[
{
"_id": {
"name": "object1"
},
"value": {
"data": [
{
"data": [
{
"data": [
{
"data": [
{
"value": "123",
"date": "2013-01-02T02:00:00.123456"
}
]
},
{
"data": [
{
"value": "465",
"date": "2013-01-02T01:00:00.123456"
}
]
},
... etc
呀,那八九不離十讓我有,但我最終的可怕嵌套了同樣的問題數據陣列如上:( – Reviloc 2013-04-22 21:20:58
_id是關鍵是正常的,你是否試過只返回vals? – Niels 2013-04-22 21:37:39