问题标签 [rmongodb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
850 浏览

r - 如何使用 $and 运算符构造 rmongodb 查询

我想使用 rmongodb 访问 R 中的 MongoDB 数据库。我尝试构建以下查询:

我尝试了三种不同的方法来创建 bson 对象,但都没有运气。

方法一:

方法二:

方法三:

它们都不起作用。全部返回空结果。

我搜索了一段时间,唯一类似的问题是rmongodb: using $or in query 解决方案是改用 RMongo,它不适用于 R 2.50。

我被困在这个问题好几天了。如果我找不到解决方案,我将不得不用 python 编写一个外部脚本并从 R 中调用它。

0 投票
1 回答
1518 浏览

r - 更新 MongoDB 中的多个文档 (rmongodb)

我偶然发现了一些关于函数处理更新(mongo.update())的问题。

免责声明

由于我仍在熟悉MongoDBrmongodb包,所以插图中的问题很可能是由于我缺乏知识;-)

准备工作

确保加载包

全局变量

创建数据库的初始状态

确保空数据库

插入文档

更新/更新文档

列出可用的文档

此时,集合中有两个文档,这是我们所期望的。

问题 #1:使用默认标志值更新 ( 0)

执行更新后,只剩下一个文档。

问题 #2:使用“multi”标志值更新 ( 2)

从头开始,因为以前的更新似乎已经损坏了数据库:

确保空数据库

插入文档

更新/更新文档

尝试更新多个文档。我在这里追求的是在两个集合中更改ageto的值99

调查当前数据库状态

我希望两个文档都有age = 99.

0 投票
2 回答
2223 浏览

r - 在 MongoDB (rmongodb) 中附加 BSON 数组

我找到有关如何使用$push运算符向数组添加新值的信息。但是,我似乎无法使用rmongodb

假设我们在数据库中有以下文档

我想为数组添加一个值tags。这是我尝试过的:

试一试

在这里,我尝试使用$push运算符

代码

日志文件

尝试 2

在这里,我尝试使用$addToSet运算符

代码

日志文件

我在这里做错了什么?


附加信息

对于那些感兴趣的人:这是生成示例文档的代码


编辑 2013-01-29

正如 10gen 的Tad Marshall在他对我的错误报告的评论中所建议的那样,我重新运行了插入文档的代码,而 MongoDB 服务器在--objcheck模式下运行(验证 BSON 结构)并且瞧:服务器不会让我插入文档由于断言失败。如果我在没有--objcheck标志的情况下运行服务器,则插入成功(但这可能只是因为没有进行验证)。

请注意,我尝试了将数组放在一起的两个不同版本,tags因为我的初始代码生成了一个文档,恕我直言,它与 MongoDB 的索引约定不同步:

(可能)无效的文件

我上面就是这样做的。我注意到我没有确保数组索引以0. 插入此文档将失败(请参阅下面的日志文件)

有效文件

我确保索引以 开头0,所以这绝对应该是一个有效的 BSON 文档。但是插入这个文件也会失败(见下面的日志文件)

日志文件

0 投票
2 回答
15419 浏览

r - 多次使用位置 `$` 运算符来更新嵌套数组

这个问题与这个问题密切相关,我将考虑在 NoSQL 上下文中给出的关于模式设计的建议,但我很想了解这一点:

实际问题

假设您有以下文档:

基本上,我想知道

  1. 如果可以在涉及“嵌套度”大于 1 的数组/文档结构的更新场景中多次使用 MongoDB 的位置$运算符(details ),或者换一种说法:

    { <update operator>: { "paths.$.queries.$.requests" : value } }不起作用

    而不是“仅”能够对顶级数组使用$ 一次,并且必须对“更高级别”的数组使用显式索引:

    { <update operator>: { "paths.$.queries.0.requests" : value } }) (作品)

  2. 如果可能的话,相应的 R 语法会是什么样子。

您将在下面找到一个可重现的示例。我尽量简洁。


代码示例

数据库连接

示例文档

使用显式位置索引更新嵌套数组(有效)

这可行,但它涉及二级数组的显式queries索引(嵌套在 array 的子文档元素中paths):

使用位置索引更新嵌套数组$(不起作用)

现在,我想0用位置$运算符替换显式,就像我所做的那样,以便让服务器找到所需的数组paths( paths.$.queries) 的子文档元素。

AFAIU文档,这应该起作用,因为关键是指定一个“正确”的查询选择器:

位置 $ 运算符,与 update() 方法一起使用时,充当更新查询选择器的第一个匹配项的占位符:

我想我指定了一个查询选择器,它确实找到了正确的嵌套元素(由于paths.queries.name="query1"部分):

我猜翻译成“普通的 MongoDB”语法,查询选择器看起来有点像这样

这对我来说似乎是一个有效的查询选择器。事实上,它确实匹配所需的元素/文档:

我的想法是,如果它适用于顶层,为什么它不能适用于更高级别(只要查询选择器指向正确的嵌套组件)?

但是,服务器似乎不喜欢嵌套或多次使用$

我不确定它是否不起作用,因为 MongoDB 不支持这一点,或者我没有得到正确的 R 语法。

0 投票
1 回答
3501 浏览

r - 将 data.frame 从 R 插入到 Mongodb

我有一个 Twitter 数据CSV文件,我使用 R 读取了该文件read.table,然后我对该数据执行了一些算法并将输出作为表格数据。我想将此表格数据插入到mongodb. 任何人都可以帮忙吗?

表格数据如下所示:

当我执行时mongo insert,数据被插入,mongodb但数据在 mongodb 中看起来像这样。

我需要将数据插入到 mongodb 中,类似于表格数据。

0 投票
0 回答
1487 浏览

r - Mongo游标循环慢

对于为 rev_timestamp 编制索引并具有大约 2 亿条记录的表,我有以下过程。它的工作速度非常快,但是在循环过程中,它每隔约 10 秒就会暂停 10-50 秒。这是为什么?

日志显示查找已完成:

但是脚本卡在第 102 项,并且进度出现在服务器上:

索引:

这是正常行为吗。据我所知,使用游标检索密钥应该很快。最初的发现应该只需要很长时间。

0 投票
1 回答
678 浏览

r - 从 MongoDB 获取不同的字段集

我知道可以在 MongoDB 命令行中使用 group 方法,但是我在 rmongodb 库中找不到如何执行这样的任务。目前,我必须获取由某些参数过滤的所有值,然后循环遍历它们添加到一个新的数据框中,以防它们在那里不存在。

这似乎非常低效,因为在 MongoDB 中将其分组花费的时间要少几个数量级......有没有通过直接 MongoDB 命令更简单的方法?

0 投票
1 回答
739 浏览

rmongodb - 聚合框架中的 rmongodb $cond

我正在尝试通过 rmongodb 中的操作在组中执行求和。我求和的“列”包含 NaN 值,导致我的总和返回 NaN。在按命令运行组之前,我想使用 $project 将 NaN 替换为零,但我被卡住了。

这将产生虚拟数据(在 mongo 控制台中):

这将产生所需的结果(在 mongo 控制台中):

这就是我在 R 中所做的工作:

当我尝试添加 $cond 来转换 NaN 时,使用以下命令:

代替

不返回任何结果,mongo.get.err() 返回值 10 表示 BSON 无效。

如果我在包含 $cond 部分时在 R 会话中运行 print(cmd),则会产生以下输出:

我认为问题不在于代码的 NaN / as.numeric(NA) 部分,因为当我尝试用零替换数字 2 时,我得到了同样的错误。

提前致谢。

0 投票
1 回答
232 浏览

r - 使用 .attrs 属性的 MongoDB 查询

鉴于我有以下json:

我想在 R 中使用 rmongodb 包进行查询。我无法查询 A.attrs 字段值。有什么建议么?

但是,我了解 (.) 在 Mongo 中不是有效的字段名称;它是使用 xml 到 json 转换器生成的。

"\uff0E" 作为转义字符没有帮助。最好将 .attrs 重命名为有效的约定,但在 json 中的不同嵌套级别有多个 .attrs。

0 投票
3 回答
1994 浏览

r - 使用 rmongodb 按时间戳查询 mongo

我正在尝试根据时间戳查询 mongodb,但我似乎总是得到一个空列表。我一定是格式错误。对于下面的 mongo 文档:

我想按创建的字段过滤文档。但是,当我尝试使用时:

我得到一个空列表。当我只使用 $gt 或 $lt 它也不起作用。日期格式是否错误?还是查询错误?