我是使用 rmongodb 的新手。目前我正在处理一些基本查询。假设我有两个我感兴趣的变量:求职者和他们的 GPA。他们的一些 GPA 是空白的,因为他们没有包括它们,所以他们的 bson 值为空。问题是我的查询返回不同长度的列表,所以我无法将候选人与他们的名字匹配。名称查询返回一个包含 153 个候选者的数据框,而 GPA 查询返回一个包含 132 个候选者的数据框……因此我无法匹配它们。
这就是我一直在做的。
### pulling candidate first names and creating a data frame
buf <- mongo.bson.buffer.create()
query <- mongo.bson.from.buffer(buf)
buf <- mongo.bson.buffer.create()
err <- mongo.bson.buffer.append(buf, "data.FNAME", 1)
field <- mongo.bson.from.buffer(buf)
out <- mongo.find(mongo, "dynamite.tdpCandidates", query, fields = field)
res <- NULL
while(mongo.cursor.next(out)){
value <- mongo.cursor.value(out)
Rvalue <- mongo.bson.to.list(value)
res <- rbind(res, Rvalue)
}
test1 <- data.frame(firstName = unlist(res[,2], recursive = TRUE))
test1 <- data.frame(lapply(test1, as.character), stringsAsFactors=FALSE)
返回 153 个名字。
#### pulling candidate education GPA and creating a dataframe from them
buf <- mongo.bson.buffer.create()
query <- mongo.bson.from.buffer(buf)
buf <- mongo.bson.buffer.create()
err <- mongo.bson.buffer.append(buf, "data.EDUCATION.GPA", 1)
field <- mongo.bson.from.buffer(buf)
out <- mongo.find(mongo, "dynamite.tdpCandidates", query, fields = field)
res <- NULL
while(mongo.cursor.next(out)){
value <- mongo.cursor.value(out)
Rvalue <- mongo.bson.to.list(value)
res <- rbind(res, Rvalue)
}
test10 <- data.frame(candGPA = unlist(res[,2], recursive = TRUE))
test10 <- data.frame(lapply(test10, as.character), stringsAsFactors=FALSE)
返回 132 GPA 的..
如果有更好的方法来做到这一点,或者只是一种简单的方法来查询 bson 空值,我将不胜感激任何建议。