gpt4 book ai didi

node.js - 使用 mongoosejs 进行 map 缩减

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:49 26 4
gpt4 key购买 nike

我正在尝试使用 Nodejs、mongoose 和 MongoDB 来进行映射缩减操作。我有一个相当平坦的模式结构,我想获取每个“命名”对象的值/日期对列表。 map 缩减功能显然有问题,但我不知道如何修复它以获得我想要的格式。

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" }

我在 Mongoose 模式中使用的 map 缩减函数如下:

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

最佳答案

尝试这样的事情:(未经测试,但我认为这个想法在这里:))

var o = {};
o.map = function () {
emit(this.name, { 'value': this.value, 'date': this.date} )
}

o.reduce = function (k, vals) {
var reduced = {name: k, data : []};
for (var i in vals) {
reduced.data.push(vals[i]);
}
return reduced;

// or just return vals? it's already the array you want.
}

关于node.js - 使用 mongoosejs 进行 map 缩减,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16156762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com