- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
尝试与令人敬畏的 mongolite 库进行正则表达式匹配,但我仍然不确定我做错了什么,我真的很想知道我在这里错过了什么。
library(mongolite)
m <- mongo(url = "mongodb://192.168.1.5:27017", db = "products", collection = "sku")
m$count()
#gives 54524
a1 <- m$find('{"item" : { "$regex" : "/.*A*./i" }}')
returns Imported 0 records. Simplifying into dataframe...
#but when you do
a1 <- m$find('{"item" : "ABC"}')
#returns 8 records
a1 <- m$find('{"item" : "AAC"}')
#returns 5 records
a1 <- m$find('{"item" : "AAAC"}')
#returns 18 records
等等。所以我不确定我在 mongodb 中调用正则表达式运算符的方式有什么问题。任何线索。?谢谢
最佳答案
在 mongo shell 中,您可以使用不带引号的 /.../
。但是,在 mongolite
中您需要引号,否则它是无效的 JSON
因此您需要使用 ... { "$regex": ".*A*.", "$options": "i"}...
考虑这个例子
library(mongolite)
m <- mongo(db = "test", collection = "test", url = "mongodb://localhost")
## create and insert some dummy data
set.seed(2016)
df <- data.frame(id = seq(1:100),
val = sample(letters, size = 100, replace = T))
m$insert(df)
## valid regex query in mongolite
m$find('{ "val" : { "$regex" : "^a", "$options" : "i" } }')
# Imported 5 records. Simplifying into dataframe...
# id val
# 1 26 a
# 2 53 a
# 3 61 a
# 4 76 a
# 5 100 a
## these queries don't work.
m$find('{ "val" : { "$regex" : "/^a/", "$options" : "i" } }')
# Imported 0 records. Simplifying into dataframe...
# data frame with 0 columns and 0 row
m$find('{ "val" : { "$regex" : /^a/, "$options" : "i" } }')
# Error: Invalid JSON object: { "val" : { "$regex" : /^a/, "$options" : "i" } }
而在 mongo shell 中(我使用 robomongo)你可以使用任一个
db.test.find({ "val" : { "$regex" : /^a/ } })
## or
db.test.find({ "val" : { "$regex" : "^a" } })
现在,如果您希望以更快的速度将数据导入 R
,并且可以将结果强制转换为 data.table
而不会丢失数据,您可以使用我编写的扩展 mongolite
的包,它使用 data.table::rbindlist
将结果转换为 data.table
.速度提高了,因为它假定您的数据处于“表格”结构中,并避免了 mongolite 中将 JSON 简化为 data.frame 的递归调用。参见 my github page更多细节。
# library(devtools)
# install_github("SymbolixAU/mongolitedt")
library(mongolitedt)
bind_mongolitedt(m)
m$finddt('{ "val" : { "$regex" : "^A", "$options" : "i" } }')
## returns a data.table
# Imported 5 records.
# id val
# 1: 26 a
# 2: 53 a
# 3: 61 a
# 4: 76 a
# 5: 100 a
关于在 R 中使用 mongolite 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37287456/
数据 这里我使用 mongolite 将虚拟数据插入测试 mongodb 数据库: library(mongolite) ## create dummy data df df id region
为了将数据保存到 mongodb(使用来自 CRAN 的 mongolite 包),我定义了以下函数: saveData mat.answers var1 var2 var3 var4 va
题 使用mongolite中的R包,如何查询给定日期的数据库? 示例数据 考虑具有两个条目的test集合 library(mongolite) ## create dummy data df df
您好,我正在尝试使用 mongolite 包更新 mongodb 中的集合,但我无法弄清楚为什么我的查询失败(谷歌没有帮助)。 我正尝试运行更新命令,但我收到错误消息,提示时间戳无效: files$u
我有一个已经加载到 mongodb 的股票数据框。随着新信息的出现,我正在尝试添加每个新行是不同日期的行。但是,当我尝试插入我的新数据框时,我收到此错误:错误:E11000 重复键错误集合:timeS
是否有办法关闭 mongolite R 包发送的 Mongo 消息?我尝试在 mongo() 函数中设置 verbose = FALSE,但这对这些消息没有任何影响。源代码引用了 log_level,
我想在 Shiny 的响应式(Reactive)上下文中运行 mongolite 查询。数据库连接参数是预先加载的,下面未显示。 (注意:loadData 函数出现在第一个代码块中)。该查询在响应式(
我正在使用 mongolite 包从 MongoDB 连接和检索数据。 如何在 mongolite 查找查询中传递值 ##connecting mongodb library(mongolite) m
我正在使用 R mongolite 在具有以下结构的 mongo 集合中读写: [{_id: 1, name: a, sites: [ {ref: site_a1}, {ref: site_a
我正在尝试查询我的数据库 ratingsChoices= m$distinct({'answers'}) 但我收到了一个警告:错误:明显太大,16mb 上限 在 mongolite 中有解决这个错误的
我现在正在学习 mongolite/mongoDB,遇到了这个: https://cran.r-project.org/web/packages/mongolite/vignettes/intro.h
我使用 R 并尝试使用最新的“Mongolite”。但是我无法连接到 MongoDB 服务器。该手册明确指出以下内容: mongo(collection = "test", db = "test",
尝试与令人敬畏的 mongolite 库进行正则表达式匹配,但我仍然不确定我做错了什么,我真的很想知道我在这里错过了什么。 library(mongolite) m <- mongo(url = "m
我的 mongodb 集合中有一个这样的 json 文档:更新文档: { "_id" : ObjectId("59da4aef8c5d757027a5a614"), "input" : "hi", "
我可以从我的 mongoDB 实例中成功检索数据,但需要为依赖查询重新使用 objectID。 下面的代码似乎得到了我的整个对象,但没有得到 id。我错过了什么? # Perform a query
我有一个 mongo 数据库,其中包含我传递给一些 R 脚本进行分析的信息。我目前正在使用 mongolite 包将信息从 mongo 传递到 R。 我在每个 mongo 条目中都有一个名为 chec
使用 mongolite v0.9.1 (R) 和 MongoDB v3.4,我想加入两个集合,第一个,包含 ObjectId 的父集合,第二个,包含父字符串值的子集合' 对象 ID。 这是基本语法:
我有自己的 AWS DocumentDB,我正在尝试使用 Mongolite 包在 R 中连接到它 我尝试用 mongolite ssl_options 做到这一点使用此代码: mong Error
您好,我正在尝试插入日期,但它只作为字符串。 mongo$update(query = paste0('{"_id": ', c, ' }'), update = paste0('{"$addToSe
在 R 中有很多用于处理 MongoDB 的包。我开始使用“mongolite”包,因为我使用“jsonlite”和“mongolite”构建在“jsonlite”之上。但是,我有点疑惑,为什么'mo
我是一名优秀的程序员,十分优秀!