gpt4 book ai didi

node.js - 在node.js-mongodb中分组

转载 作者:太空宇宙 更新时间:2023-11-03 22:46:55 25 4
gpt4 key购买 nike

我想在我的 server.js 中使用 group by,但我收到此错误:

TypeError:Object #(Collection) has no method 'group'

我在网上查了一下,发现这就是该函数的名称。

这是我写的:

var monk = require('monk');
var db = monk('localhost:27017/Messages');
var collection = db.get('col');
collection.group(['a'], {}, {}, {}, function (e, docs) {
res.json(docs);
});

谁能告诉我怎么了?谢谢!

最佳答案

Monk 没有实现 .group()方法本身,但有一个 .col 访问器可用,您可以从中获取 native Collection来自底层驱动程序的对象并使用它的方法。

您对 .group() 的使用情况有点偏离,所以我将使用我的数据作为示例:

{
"_id" : ObjectId("5479c4793815a1f417f537a0"),
"status" : "canceled",
"date" : ISODate("2014-11-29T00:00:00.000Z"),
"offset" : 30,
},
{
"_id" : ObjectId("5479c4793815a1f417d557a0"),
"status" : "done",
"date" : ISODate("2014-10-20T00:00:00.000Z"),
"offset" : 30,
},
{
"_id" : ObjectId("5479c4793815a1f417f117a0"),
"status" : "done",
"date" : ISODate("2014-12-29T00:00:00.000Z"),
"offset" : 30,
}

然后你可以编写一个 .group() 语句,如下所示:

  var db = require('monk')('localhost/test'),
sample = db.get('sample');

sample.col.group(
["status"],
{},
{ "count": 0 },
"function (obj,prev) { prev.count++; }",
function(err,docs) {
if (err) console.log(err);
console.log( docs );
}
);

但这也表明 99% 的情况下您可能确实想要 .aggregate()方法替代:

  var db = require('monk')('localhost/test'),
sample = db.get('sample');

sample.col.aggregate(
[
{ "$group": {
"_id": "$sample",
"count": { "$sum": 1 }
}}
],
function(err,docs) {
if (err) console.log(err);
console.log( docs );
}
);

聚合框架通常比 .group() 灵活得多,并且运行 native 代码运算符而不是解释型 JavaScript,因此非常值得学习。

关于node.js - 在node.js-mongodb中分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28009837/

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