R 使用Mongolite向集合中插入条目时,如何获取ObjectID?
我在一个小项目中,Mongo数据库有一些集合,这些集合与其他集合有一对多的关系R 使用Mongolite向集合中插入条目时,如何获取ObjectID?,r,mongodb,mongolite,R,Mongodb,Mongolite,我在一个小项目中,Mongo数据库有一些集合,这些集合与其他集合有一对多的关系 假设我有一个名为公司的集合,它与员工有一对多的关系。在R中,如果我刚刚创建了一个公司实例,并且执行了类似于returnValue的操作,那么在将文档插入到集合中时,我无法找到获取生成的对象id的方法,但最终我只是使用了一种解决方法。解决方法是在文档中有一个临时字段,其中包含一个UUID,然后使用该UUID再次查找对象。之后,您可以获取mongo生成的\u id,并删除创建的临时字段。这里有一个函数可以做到这一点 #
假设我有一个名为
公司
的集合,它与员工
有一对多的关系。在R中,如果我刚刚创建了一个公司实例,并且执行了类似于returnValue的操作,那么在将文档插入到集合中时,我无法找到获取生成的对象id的方法,但最终我只是使用了一种解决方法。解决方法是在文档中有一个临时字段,其中包含一个UUID,然后使用该UUID再次查找对象。之后,您可以获取mongo生成的\u id
,并删除创建的临时字段。这里有一个函数可以做到这一点
# an example of a collection
myTableCollection<- mongo("myTable", url = "mongodb://localhost:27017/myDatabase")
# This is a function to insert a dataframe into mongo collection as a document,
# and get back the ObjectID that was generated by mongo
storeIntoCollection <- function(document, collection){
# so create a temporary ID to find the entry in the database again
temp <- UUIDgenerate()
document$creationID <- temp
# insert the DB Object
returnValue = collection$insert(document)
# query string to look up object using temp id
id_string <- paste('{"creationID" : "' , temp , '"}', sep="")
# Get mongo DB object just inserted
insertedDocument = collection$find(id_string, field = '{}')
# delete the temporary 'creationID' field
update_string <- paste('{ "$unset" : {"creationID": ""} }', sep="")
collection$update(id_string, update_string)
# turn '_id' to 'id'
colnames(document)[colnames(document)=="_id"] <- "id"
return(insertedDocument$id)
}
#一个集合的示例
myTableCollection