2

我是使用 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 空值,我将不胜感激任何建议。

4

0 回答 0