gpt4 book ai didi

node.js - Mongoose 映射减少()

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

我正在跟踪玩家的分数以记录成长。我的架构如下:

Schema = new schema({
pid: { type: Number }
, name: { type: String }
, alliance: {
aid: { type: Number }
, name: { type: String }
}
, city_cnt: { type: Number }
, score: { type: Number }
, rank: { type: Number }
, createdTimeAt: { type: Date, default: Date.now }
, createdDayAt: { type: Number, default: function() { return Math.floor(Date.now() / (24 * 60 * 60)) } }
})

现在我想为每个玩家每天提取一条记录(即当天最后记录的分数)。所以我有这个 map 缩小:

growthMap = function(){
emit('createdTimeAt', this.createdTimeAt.toString())
}

growthReduce = function(prev, doc) {
if (doc.createdTimeAt > prev.createdTimeAt) {
prev.createdTimeAt = doc.createdTimeAt
prev.score = doc.score

prev.pid = doc.pid
prev.name = doc.name
}
}

mongoose.connect('mongodb://localhost/my_database')
mongoose.model('Players', Schema)

mongoose.connection.db.executeDbCommand({
mapreduce: 'players'
, map: growthMap.toString()
, reduce: growthReduce.toString()
, out: 'playerGrowth'
}, function(err, ret){
if (err) console.log(err)
else {
console.log(ret.documents)
mongoose.connection.db.collection('playerGrowths', function(err, collection){
collection.find({}).toArray(function(err, docs){
console.dir(docs)
})

})
}
})

map 缩减似乎工作正常。第一个输出 console.log(ret.documents) 产生以下结果:

[ { result: 'playerGrowth',
timeMillis: 11268,
counts: { input: 14635, emit: 14635, reduce: 15, output: 1 },
ok: 1 } ]

但是,每当我尝试在第二个输出 console.log(docs) 中查询新集合时,我都会得到一个空数组,没有任何结果。我确信我做错了什么,但是在涉及到 mapreduce 时缺少 mongoose 文档。

编辑

根据下面 Jed 的回答,我将 mongoose.connection.db.collection('playerGrowths' 更改为 mongoose.connection.db.collection('playerGrowth'),并且我至少从 find({}).toArray() 中得到了结果。但是,它仍然不是我所期望或需要的...

我的新结果

[ { result: 'playerGrowth',
timeMillis: 5743,
counts: { input: 14635, emit: 14635, reduce: 15, output: 1 },
ok: 1 } ]
null
[ { _id: 'createdTimeAt', value: null } ]

最佳答案

尝试改变:

mongoose.connection.db.collection('playerGrowths'...

致:

mongoose.connection.db.collection('playerGrowth'...

关于node.js - Mongoose 映射减少(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8843264/

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