【问题标题】:mongolite - correct syntax for aggregate methodmongolite - 聚合方法的正确语法
【发布时间】:2016-03-20 05:09:43
【问题描述】:

数据

这里我使用mongolite 将虚拟数据插入到测试 mongodb 数据库中:

library(mongolite)

## create dummy data
df <- data.frame(id = c(1,2,3,4),
                 region = c("r1", "r1", "r2", "r2"))

> df
  id region
1  1     r1
2  2     r1
3  3     r2
4  4     r2

## insert into database
mong <- mongo(collection = "test", db = "test", url = "mongodb://localhost")
mong$insert(df)

问题

如何使用aggregate 方法查找每个区域的记录数?

Mongo Shell 查询

此查询在 mongo shell 中运行时返回正确答案

db.test.aggregate({ $group : { _id : "$region", number_records : { $sum : 1}}})

我现在如何将其转换为mongolite 的正确语法?


尝试

我以为

mong$aggregate('{ $group : { _id : "$region", number_records : { $sum : 1}}}')

会这样做,但我收到 Error: invalid JSON object 错误。

我觉得我忽略了一些非常简单的事情!

【问题讨论】:

    标签: r mongolite


    【解决方案1】:

    仔细观察the documentation (page 4),它表明我实际上需要在每个键/值周围加上引号,并在整个查询周围加上方括号:

    > mong$aggregate('[{ "$group" : 
                          { "_id" : "$region", 
                            "number_records" : { "$sum" : 1}
                          }
                      }]')
     Imported 2 records. Simplifying into dataframe...
      _id number_records
    1  r2              2
    2  r1              2
    

    【讨论】:

      猜你喜欢
      • 2018-02-10
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      相关资源
      最近更新 更多