- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试从 rmongodb 访问 mongodb 聚合框架。它应该可以通过 mongo.command() 获得,但我无法获得正确的 bson。
这是一个可复制的例子。在 R 中,设置测试集合:
mongo <- mongo.create()
db <- "test"
ns <- "test.people"
buf <- mongo.bson.buffer.create()
mongo.bson.buffer.append(buf, "name", "John")
mongo.bson.buffer.append(buf, "age", 22L)
b <- mongo.bson.from.buffer(buf)
mongo.insert(mongo, ns, b);
buf <- mongo.bson.buffer.create()
mongo.bson.buffer.append(buf, "name", "John")
mongo.bson.buffer.append(buf, "age", 35L)
b <- mongo.bson.from.buffer(buf)
mongo.insert(mongo, ns, b);
buf <- mongo.bson.buffer.create()
mongo.bson.buffer.append(buf, "name", "Fred")
mongo.bson.buffer.append(buf, "age", 27L)
b <- mongo.bson.from.buffer(buf)
mongo.insert(mongo, ns, b);
Now, on the mongo console, the following works:
use test
db.runCommand({
aggregate : "people", pipeline : [
{ $group :
{ _id : '$name',
total : { $sum : 1 } } } ]
})
R 中的以下代码似乎可以达到相同的效果:
mongo.command(mongo, "test", list(
aggregate="people",
pipeline=list(
group=list(
"_id"="$name",
total=list("$sum"=1)
)
)
))
这行不通。
对于这个特定的聚合,我知道还有其他方法可以做到。我只是将它作为一个简单的示例提供,但我想在未来获得更复杂的聚合。
此外,我知道另一个适用于 mongodb 的 R 包,我可能会研究它来实现这个技巧,但我现在投入了大量资金来使用这个包。
最佳答案
首先,下面的代码会给你想要的结果:
sub.buf <- mongo.bson.buffer.create();
mongo.bson.buffer.start.object(sub.buf, "$group");
mongo.bson.buffer.append(sub.buf, "_id", "$name");
mongo.bson.buffer.start.object(sub.buf, "total");
mongo.bson.buffer.append(sub.buf, "$sum", 1L);
mongo.bson.buffer.finish.object(sub.buf);
mongo.bson.buffer.finish.object(sub.buf);
sb <- mongo.bson.from.buffer(sub.buf);
buf <- mongo.bson.buffer.create();
mongo.bson.buffer.append(buf, "aggregate", "people");
mongo.bson.buffer.start.array(buf, "pipeline");
mongo.bson.buffer.append(buf, "0", sb);
mongo.bson.buffer.finish.object(buf);
cmd <- mongo.bson.from.buffer(buf);
我发现在 rmongodb 中执行聚合的挑战在于用户:
我对 (3) 的看法可能是错误的,尽管我还没有在任何地方看到任何其他关于如何执行“组”聚合的示例,这会使声明打折扣。
祝你好运!
关于r - 如何从 rmongodb R 包访问 MongoDB 的聚合框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16367408/
我正在努力在 R 和 rmongodb 中使用 $or 创建查询。我想模拟的是来自 cmdline mongo 的这个: db.people.find( { $or : [ {"person.cell
我正在尝试通过 rmongodb 中的操作在组中执行求和。我求和的“列”包含 NaN 值,导致我的总和返回 NaN。在通过命令运行组之前,我想使用 $project 用零替换 NaN,但我被卡住了。
当使用 rmongodb 时,您将如何处理 MongoDB 查询的结果集(长度 > 1)包,什么时候你的最终对象应该是一个 list? 我尽量避免 R 典型的“按值传递”复制效率低下,这种情况在单步执
我正在使用 rmongodb 来获取特定集合中的每个文档。它可以工作,但我正在处理数百万个小文档,可能是 100M 或更多。我正在使用作者在网站上建议的方法:cnub.org/rmongodb.ash
我正在使用R和rmongodb从MongoDB NoSQL数据库中提取数据。我输入了try()逻辑来捕获由不良数据引起的问题。在大多数情况下,try()会捕获错误并跳过错误的数据对象。但是有时,它“无
我在理解如何更新子文档(相对于整个子文档)的特定字段时遇到了一些问题。 我似乎已经理解了如何查询子文档中的某些字段值,但我不知道如何构造一个 BSON 文档来只更改查询的字段。 仍然觉得我没有完全理解
我正在构建一个R 脚本,我需要在其中通过身份验证连接到MongoDB 并使用 rmongodb 处理从数据库中获取的数据。 包。为此,我在 3.0.4 版 中创建了一个新的 MongoDB 用户,并且
我偶然发现了一些关于函数处理更新 (mongo.update()) 的问题。 免责声明 因为我还在熟悉这两个 MongoDB和 rmongodb包,图示的问题很可能都是由于我缺乏知识;-) 准备工作
我在 Ubuntu 14.04.1 中安装了 R 3.02。我尝试使用以下命令安装 rmongodb 包 install.packages("rmongodb") 我得到的回应是: > install
这是你在 mongo shell 中得到的: db.col.find(ObjectId("5571849db1969e0a6eb32731")).pretty() { "_id" : Object
我尝试使用以下方法将数据从 mongodb 导入到 r: mongo.find.all(mongo, namespace, query=query, fields= list('_id'= 0, 'e
我正在尝试将 mongo 集合转换为 R 数据框。我正在使用 rmongodb 包来做同样的事情。我遇到了数据类型为“ObjectId”的字段的问题(在下面的代码中,“_id”列),rmongodb
我正在尝试从 rmongodb 访问 mongodb 聚合框架。它应该可以通过 mongo.command() 获得,但我无法获得正确的 bson。 这是一个可复制的例子。在 R 中,设置测试集合:
由于 MySQL 让我发疯,我正试图让自己熟悉我的第一个“NoSQL”DBMS,它恰好是 MongoDB .我通过 rmongodb 连接到它. 我玩的越多rmongodb ,关于运行高级查询的问题/
当尝试使用 rmongodb 和 plyr 包将数据帧从 MongoDB 传输到 R 时,我得到了一些关于巨大集合集的奇怪结果。我从有关该主题的各种 github 和论坛中获取这段代码,并根据我的目的
我是一名优秀的程序员,十分优秀!