问题标签 [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.
r - 如何使用 $and 运算符构造 rmongodb 查询
我想使用 rmongodb 访问 R 中的 MongoDB 数据库。我尝试构建以下查询:
我尝试了三种不同的方法来创建 bson 对象,但都没有运气。
方法一:
方法二:
方法三:
它们都不起作用。全部返回空结果。
我搜索了一段时间,唯一类似的问题是rmongodb: using $or in query 解决方案是改用 RMongo,它不适用于 R 2.50。
我被困在这个问题好几天了。如果我找不到解决方案,我将不得不用 python 编写一个外部脚本并从 R 中调用它。
r - 更新 MongoDB 中的多个文档 (rmongodb)
我偶然发现了一些关于函数处理更新(mongo.update()
)的问题。
免责声明
由于我仍在熟悉MongoDB和rmongodb包,所以插图中的问题很可能是由于我缺乏知识;-)
准备工作
确保加载包
全局变量
创建数据库的初始状态
确保空数据库
插入文档
更新/更新文档
列出可用的文档
此时,集合中有两个文档,这是我们所期望的。
问题 #1:使用默认标志值更新 ( 0
)
执行更新后,只剩下一个文档。
问题 #2:使用“multi”标志值更新 ( 2
)
从头开始,因为以前的更新似乎已经损坏了数据库:
确保空数据库
插入文档
更新/更新文档
尝试更新多个文档。我在这里追求的是在两个集合中更改age
to的值99
调查当前数据库状态
我希望两个文档都有age = 99
.
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 文档。但是插入这个文件也会失败(见下面的日志文件)
日志文件
r - 多次使用位置 `$` 运算符来更新嵌套数组
这个问题与这个问题密切相关,我将考虑在 NoSQL 上下文中给出的关于模式设计的建议,但我很想了解这一点:
实际问题
假设您有以下文档:
基本上,我想知道
如果可以在涉及“嵌套度”大于 1 的数组/文档结构的更新场景中多次使用 MongoDB 的位置
$
运算符(details ),或者换一种说法:{ <update operator>: { "paths.$.queries.$.requests" : value } }
(不起作用)而不是“仅”能够对顶级数组使用
$
一次,并且必须对“更高级别”的数组使用显式索引:{ <update operator>: { "paths.$.queries.0.requests" : value } }
) (作品)如果可能的话,相应的 R 语法会是什么样子。
您将在下面找到一个可重现的示例。我尽量简洁。
代码示例
数据库连接
示例文档
使用显式位置索引更新嵌套数组(有效)
这可行,但它涉及二级数组的显式queries
索引(嵌套在 array 的子文档元素中paths
):
使用位置索引更新嵌套数组$
(不起作用)
现在,我想0
用位置$
运算符替换显式,就像我所做的那样,以便让服务器找到所需的数组paths
( paths.$.queries
) 的子文档元素。
AFAIU文档,这应该起作用,因为关键是指定一个“正确”的查询选择器:
位置 $ 运算符,与 update() 方法一起使用时,充当更新查询选择器的第一个匹配项的占位符:
我想我指定了一个查询选择器,它确实找到了正确的嵌套元素(由于paths.queries.name="query1"
部分):
我猜翻译成“普通的 MongoDB”语法,查询选择器看起来有点像这样
这对我来说似乎是一个有效的查询选择器。事实上,它确实匹配所需的元素/文档:
我的想法是,如果它适用于顶层,为什么它不能适用于更高级别(只要查询选择器指向正确的嵌套组件)?
但是,服务器似乎不喜欢嵌套或多次使用$
:
我不确定它是否不起作用,因为 MongoDB 不支持这一点,或者我没有得到正确的 R 语法。
r - 将 data.frame 从 R 插入到 Mongodb
我有一个 Twitter 数据CSV文件,我使用 R 读取了该文件read.table
,然后我对该数据执行了一些算法并将输出作为表格数据。我想将此表格数据插入到mongodb
. 任何人都可以帮忙吗?
表格数据如下所示:
当我执行时mongo insert
,数据被插入,mongodb
但数据在 mongodb 中看起来像这样。
我需要将数据插入到 mongodb 中,类似于表格数据。
r - Mongo游标循环慢
对于为 rev_timestamp 编制索引并具有大约 2 亿条记录的表,我有以下过程。它的工作速度非常快,但是在循环过程中,它每隔约 10 秒就会暂停 10-50 秒。这是为什么?
日志显示查找已完成:
但是脚本卡在第 102 项,并且进度出现在服务器上:
索引:
这是正常行为吗。据我所知,使用游标检索密钥应该很快。最初的发现应该只需要很长时间。
r - 从 MongoDB 获取不同的字段集
我知道可以在 MongoDB 命令行中使用 group 方法,但是我在 rmongodb 库中找不到如何执行这样的任务。目前,我必须获取由某些参数过滤的所有值,然后循环遍历它们添加到一个新的数据框中,以防它们在那里不存在。
这似乎非常低效,因为在 MongoDB 中将其分组花费的时间要少几个数量级......有没有通过直接 MongoDB 命令更简单的方法?
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 时,我得到了同样的错误。
提前致谢。
r - 使用 .attrs 属性的 MongoDB 查询
鉴于我有以下json:
我想在 R 中使用 rmongodb 包进行查询。我无法查询 A.attrs 字段值。有什么建议么?
但是,我了解 (.) 在 Mongo 中不是有效的字段名称;它是使用 xml 到 json 转换器生成的。
"\uff0E" 作为转义字符没有帮助。最好将 .attrs 重命名为有效的约定,但在 json 中的不同嵌套级别有多个 .attrs。
r - 使用 rmongodb 按时间戳查询 mongo
我正在尝试根据时间戳查询 mongodb,但我似乎总是得到一个空列表。我一定是格式错误。对于下面的 mongo 文档:
我想按创建的字段过滤文档。但是,当我尝试使用时:
我得到一个空列表。当我只使用 $gt 或 $lt 它也不起作用。日期格式是否错误?还是查询错误?