MongoDB从入门到实战(四):MongoDB 新增文档和删除文档

x33g5p2x  于2021-12-25 转载在 Go  
字(4.5k)|赞(0)|评价(0)|浏览(531)

一:插入文档 insert

  1. // 查看集合的所有操作
  2. db.collections.help()
  3. db.collections.insert(obj)
  4. // insert a document, optional parameters are: w, wtimeout, j
  5. db.collections.insertOne( obj, <optional params> )
  6. // insert multiple documents, optional parameters are: w, wtimeout, j
  7. db.collections.insertMany( [objects], <optional params> )
  8. db.collections.save(obj)
  9. db.user.findAndModify()

db.collections.insert(obj)

只插入,不返回插入的主键_id,支持插入单个或者批量插入。如果_id已经存在则报错。

  1. // 单个插入,BSON支持日期类型
  2. > db.user.insert({"_id": 1, "username": "monday", "createtime": new Date()})
  3. WriteResult({ "nInserted" : 1 })
  4. > db.user.find()
  5. { "_id" : 1, "username" : "monday", "createtime" : ISODate("2021-04-12T00:30:38.299Z") }
  6. // 批量插入
  7. > db.user.insert([{"_id": 1, "username": "a"}, {"_id": 2, "username": "b"}])

db.collections.insertOne( obj, < optional params > )

插入一条记录,返回值返回插入的主键_id。如果_id已经存在则报错。

  1. > db.user.remove({})
  2. > db.user.insertOne({"_id": 1, "username": "monday"})
  3. {
  4. "acknowledged" : true,
  5. "insertedId" : ObjectId("6072b325fef4d53269886180")
  6. }

db.collections.insertMany( [objects], < optional params > )

批量插入,返回插入的主键_id。如果_id已经存在则报错。

  1. > db.user.remove({})
  2. > db.user.insertMany([{"_id": 1, "username": "a"}, {"_id": 2, "username": "b"}])
  3. {
  4. "acknowledged" : true,
  5. "insertedIds" : [
  6. ObjectId("6072b428fef4d53269886181"),
  7. ObjectId("6072b428fef4d53269886182")
  8. ]
  9. }

db.collections.save(obj)

主键_id如果不存在则保存,如果存在则整体替换。

  1. > db.user.remove({})
  2. WriteResult({ "nRemoved" : 1 })
  3. > db.user.save({"_id": 1, "username": "a"})
  4. WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 1 })
  5. > db.user.find()
  6. { "_id" : 1, "username" : "a" }
  7. // _id 已经存在,则整体替换
  8. > db.user.save({"_id": 1, "age": 30})
  9. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  10. > db.user.find()
  11. { "_id" : 1, "age" : 30 }

db.user.findAndModify()

upsert=true, 不存在则插入,返回null;存在则修改,返回原来的值。

  1. > db.user.remove({})
  2. WriteResult({ "nRemoved" : 3 })
  3. > db.user.insertMany([{"_id": 1, "username": "a"}, {"_id": 2, "username": "b"}])
  4. { "acknowledged" : true, "insertedIds" : [ 1, 2 ] }
  5. > db.user.find()
  6. { "_id" : 1, "username" : "a" }
  7. { "_id" : 2, "username" : "b" }
  8. // 如果不存在则新增
  9. > db.user.findAndModify({ "query": {"_id": 3}, "update": { "username": "c"}, "upsert": true })
  10. null
  11. > db.user.find()
  12. { "_id" : 1, "username" : "a" }
  13. { "_id" : 2, "username" : "b" }
  14. { "_id" : 3, "username" : "c" }
  15. // 如果存在则修改
  16. > db.user.findAndModify({ "query": {"_id": 3}, "update": { "username": "cc"}, "upsert": true })
  17. { "_id" : 3, "username" : "c" }
  18. > db.user.find()
  19. { "_id" : 1, "username" : "a" }
  20. { "_id" : 2, "username" : "b" }
  21. { "_id" : 3, "username" : "cc" }

db.collection.update(query, update, addOrUpdate)

addOrUpdate=true, 表示不存在则插入,false表示存在则更新。

  1. > db.user.find()
  2. { "_id" : 1, "username" : "a" }
  3. { "_id" : 2, "username" : "b" }
  4. > db.user.update({"_id" : 3}, { "_id" : 3, "username" : "c" }, true)
  5. WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 3 })
  6. > db.user.find()
  7. { "_id" : 1, "username" : "a" }
  8. { "_id" : 2, "username" : "b" }
  9. { "_id" : 3, "username" : "c" }
  10. > db.user.update({"_id" : 3}, { "_id" : 3, "username" : "cc" }, true)
  11. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  12. > db.user.find()
  13. { "_id" : 1, "username" : "a" }
  14. { "_id" : 2, "username" : "b" }
  15. { "_id" : 3, "username" : "cc" }

二:删除文档 delete

  1. // 删除满足条件的所有数据
  2. > db.user.remove({"username": "b"})
  3. // 删除满足条件的第一条数据
  4. > db.user.remove({"username": "c"}, true)
  5. // 清空集合中的所有文档
  6. > db.user.remove({})

三:删除集合

  1. db.uesr.drop()

相关文章