Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用Mongolite向集合中插入条目时,如何获取ObjectID?_R_Mongodb_Mongolite - Fatal编程技术网

R 使用Mongolite向集合中插入条目时,如何获取ObjectID?

R 使用Mongolite向集合中插入条目时,如何获取ObjectID?,r,mongodb,mongolite,R,Mongodb,Mongolite,我在一个小项目中,Mongo数据库有一些集合,这些集合与其他集合有一对多的关系 假设我有一个名为公司的集合,它与员工有一对多的关系。在R中,如果我刚刚创建了一个公司实例,并且执行了类似于returnValue的操作,那么在将文档插入到集合中时,我无法找到获取生成的对象id的方法,但最终我只是使用了一种解决方法。解决方法是在文档中有一个临时字段,其中包含一个UUID,然后使用该UUID再次查找对象。之后,您可以获取mongo生成的\u id,并删除创建的临时字段。这里有一个函数可以做到这一点 #

我在一个小项目中,Mongo数据库有一些集合,这些集合与其他集合有一对多的关系


假设我有一个名为
公司
的集合,它与
员工
有一对多的关系。在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