如何使用 rmongodb 按 ObjectId 查询文档

Posted

技术标签:

【中文标题】如何使用 rmongodb 按 ObjectId 查询文档【英文标题】:How to query a Document by ObjectId with rmongodb 【发布时间】:2015-06-17 14:35:56 【问题描述】:

这是你在 mongo shell 中得到的:

db.col.find(ObjectId("5571849db1969e0a6eb32731")).pretty()
   
"_id" : ObjectId("5571849db1969e0a6eb32731"),
    "name" : "Some name",
    "logo" : "Some logo",
    "users" : [
        ObjectId("5571830031c7fc341bc2e105"),
        ObjectId("5571830031c7fc341bc2e107")
    ],
    "admins" : [ ],
    "__v" : 0,
    "steps" : 5782

这是我在 rmongo 中得到的:

myResult <- mongo.find(Connexion, "db.col", query='ObjectId("5571849db1969e0a6eb32731")')

#Error in mongo.bson.from.JSON(arg) : 
#  Not a valid JSON content: ObjectId("5571849db1969e0a6eb32731")

那么,怎么做才对呢?

以防万一:我已经看过this。但是 mongolite 不支持身份验证(因此不可行),我不明白如何处理第二个答案。如果我尝试

result <- mongo.find(Connexion, "db.col", query=mongo.oid.from.string("5571849db1969e0a6eb32731"))

我明白了

# Error in mongo.bson.from.argument(query) : Can't convert to bson: argument should be one of 'list', 'mongo.bson' or 'character'(valid JSON)

【问题讨论】:

【参考方案1】:

这应该有效:

result <- mongo.find(Connexion, "db.col", query=list('_id' = mongo.oid.from.string("5571849db1969e0a6eb32731")))

【讨论】:

是的,我终于明白了:[1] 0 attr(,"mongo.cursor") &lt;pointer: 0x326d750&gt; attr(,"class") [1] "mongo.cursor" 不是一个错误,而是一个有效的答案 非常感谢先生.. 这个答案@Dmitriy Selivanov

以上是关于如何使用 rmongodb 按 ObjectId 查询文档的主要内容,如果未能解决你的问题,请参考以下文章

聚合框架中的 rmongodb $cond

如何使用 rmongodb 将数据框插入 mongodb

使用 rmongodb 连接到 MongoDB 副本集

在 MongoDB (rmongodb) 中附加 BSON 数组

rmongodb 没有为键返回不同的值

按 ObjectId 日期聚合 MongoDB 结果