MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

R:Cập nhật mục nhập trong mongodb bằng mongolite

mongo$update() hàm nhận một query và một update tranh luận. Bạn sử dụng query để tìm dữ liệu bạn muốn cập nhật và update để cho nó biết trường nào cần cập nhật.

Hãy xem xét ví dụ này

library(mongolite)
    
## create some dummy data and insert into mongodb
df <- data.frame(id = 1:10,
  value = letters[1:10]
)
    
mongo <- mongo(collection = "another_test", 
  db = "test", 
  url = "mongodb://localhost")
    
mongo$insert(df)
    
## the 'id' of the document I want to update
mongoID <- "575556825dabbf2aea1d7cc1"
    
## find some data
rawData <- mongo$find(query = paste0('{"_id": { "$oid" : "',mongoID,'" }}'), 
  fields = '{"_id" : 1, 
  "id" : 1, 
  "value" : 1}'
)
    
## ...
## do whatever you want to do in R...
## ...

## use update to query on your ID, then 'set' to set the 'checkedByR' value to 1

mongo$update(
  query = paste0('{"_id": { "$oid" : "', mongoID, '" } }'),
  update = '{ "$set" : { "checkedByR" : 1} }'
)

## in my original data I didn't have a 'checkedByR' value, but it's added anyway

Cập nhật

rmongodb thư viện không còn trên CRAN, vì vậy mã dưới đây sẽ không hoạt động

Và đối với các cấu trúc và cập nhật phức tạp hơn, bạn có thể làm những việc như

Thư viện
library(mongolite)
library(jsonlite)
library(rmongodb)  ## used to insert a non-data.frame into mongodb
    
## create some dummy data and insert into mongodb
lst <- list(id = 1,
  value_doc = data.frame(id = 1:5,
  value = letters[1:5],
  stringsAsFactors = FALSE),
  value_array = c(letters[6:10])
)
    
## using rmongodb
mongo <- mongo.create(db = "test")
coll <- "test.another_test"
    
mongo.insert(mongo, 
  ns = coll, 
  b = mongo.bson.from.list(lst)
)
    
mongo.destroy(mongo)

## update document with specific ID
mongoID <- "5755f646ceeb7846c87afd90"
    
## using mongolite
mongo <- mongo(db = "test", 
  coll = "another_test", 
  url = "mongodb://localhost"
)
    
    
## to add a single value to an array
mongo$update(
  query = paste0('{"_id": { "$oid" : "', mongoID, '" } }'),
  update = '{ "$addToSet" : { "value_array" :  "checkedByR"  } }'
)
    
## To add a document  to the value_array
mongo$update(
  query = paste0('{"_id": { "$oid" : "', mongoID, '" } }'),
  update = '{ "$addToSet" : { "value_array" : { "checkedByR" : 1} } }'
)
    
## To add to a nested array
mongo$update(
  query = paste0('{"_id": { "$oid" : "', mongoID, '" } }'),
  update = '{ "$addToSet" : { "value_doc.value" :  "checkedByR" } }'
)
    
rm(mongo); gc()

xem cập nhật mongodb tài liệu để biết thêm chi tiết




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mỗi lần chạy thứ hai ném:MongoError:Topo bị phá hủy

  2. Cập nhật cùng một thuộc tính của mọi tài liệu của bộ sưu tập mongoDb với các giá trị khác nhau

  3. MongoDB sao chép một trường vào một bộ sưu tập khác bằng khóa ngoại

  4. MongoDB-as-a-Service trong Tài khoản Amazon AWS của Chính bạn

  5. Hiển thị kết quả yêu cầu GET trong trình duyệt bằng NodeJS