mongoシェルでは、引用符なしで/ ... /
を使用します。しかし、mongolite
以内にあなたが引用符を必要とするそれ以外の場合は、あなたはそのためのmongoシェルで(私はrobomongoを使用)のに対し、この例
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" } }
考えてみましょう... { "$regex" : ".*A*.", "$options" : "i"}...
を使用する必要が無効なJSON
だあなたcanいずれかを使用
db.test.find({ "val" : { "$regex" : /^a/ } })
## or
db.test.find({ "val" : { "$regex" : "^a" } })
あなたはもう少しスピードが
R
にあなたのデータを取得し、あなたの結果は、データの損失なし
data.table
に強制することができます後にしている場合
さて、あなたはdata.table::rbindlist
を使用していますmongolite
を拡張し、私が書いたパッケージを使用することができます結果をdata.table
に変換します。あなたのデータが「表形式」の構造であると仮定し、JSONをdata.frameに単純化するmongoliteの再帰呼び出しを避けるため、速度は向上します。詳細は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
正規表現クエリはmongoシェルで機能しますか? – SymbolixAU
try 'a1 < - m $ find( '{" item ":" $ regex ":*。*、" $ options ":" i "}}') – SymbolixAU