MongoDB - 文档

作者: yuanzicheng | 来源:发表于2018-05-07 13:49 被阅读17次

1.文档是什么?

文档是MongoDB中的数据基本单元,它以BSON(类似JSON)格式存放在集合中。文档类似于关系型数据库中表的记录。

每个文档都有一个特殊的键"_id",它在文档所处的集合中是唯一的。

2.文档相关CURD

以下命令均以user集合为例

  • 写入文档
db.user.insert({ "name" : "tom", "age" : 12 })
db.user.save({ "name" : "tom", "age" : 12 })
  • 查询文档(更多查询方式见文档查询这一篇,这里不一一展开)
db.user.find()
  • 更新文档

save() 更新指定_id的文档

db.user.save({"name":"tom","_id":ObjectId("5ae2983e9e56c4bf8d07e97f")})

update() 按条件更新文档(更多文档修改相关内容见文档修改这一篇)

# 语法
db.collection_name.update(
    查询条件,
    整个文档或修改器,
    upsert: 不存在匹配的文档时是否写入新文档,默认false(可选)
    multi: 是否更新匹配的全部文档,默认false,此参数为true时第二个参数必须使用修改器(可选)
)
# 示例
db.user.update({"name":"tom"},{"name":"jack","age":12,"sex":"男"})
db.user.update({"name":"tom"},{"name":"jack","age":12,"sex":"男"},true)
db.user.update({"name":"tom"},{$set:{"name":"jack","age":12,"sex":"男"}},true,true,WriteConcern.SAFE)
db.user.update({"name":"tom"},{$set:{"name":"jack","age":12,"sex":"男"}},{multi:true})
  • 删除文档
# 语法
db.collection_name.remove(
    查询条件,
    justOne: 匹配到多个文档时是否只删除一个文档,默认false  (可选)
    writeConcern: 异常级别(可选)
)
# 示例
# 删除指定_id的文档
db.user.remove({"_id":ObjectId("5ae2983e9e56c4bf8d07e97f")}
# 删除指定属性的文档,匹配多个文档时只删除一个文档
db.user.remove({"name":"tom"},true)
# 删除指定属性的文档,匹配多个文档时只删除一个文档,并指定写操作的异常级别
db.user.remove({"name":"tom"},true,WriteConcern.NORMAL)
  • 更新或删除并返回文档
# 语法
db.collection.findAndModify({
    query: <document>,  # 查询条件
    sort: <document>,  # 排序,只会更新会删除匹配到的第一个文档,如{"age":-1}表示按年龄倒序,{"age":1}表示按年龄正序
    remove: <boolean>,  # 是否删除,不能与update参数同时存在
    update: <document>,  # 整个文档或修改器,不能与remove参数同时存在
    new: <boolean>,  # 是否返回更新后的文档,默认为false,仅与update配合使用
    fields: <document>,
    upsert: <boolean>,  # 不存在匹配的文档时是否写入新文档,默认false
    bypassDocumentValidation: <boolean>,
    writeConcern: <document>,
    collation: <document>,
    arrayFilters: [ <filterdocument1>, ... ]
});
# 示例
db.user.findAndModify({query:{"name":"tom"},update:{"name":"tom","age":13},sort:{"age":-1},new:true})
db.user.findAndModify({query:{"name":"tom"},remove:true})
  • 查询满足条件的文档数量
db.user.count({"name":"jack"})

5.update修改器

6.聚合

原生聚合运算
聚合管道

7.写操作异常级别

  • WriteConcern.NONE 无异常抛出
  • WriteConcern.NORMAL 仅抛出网络错误异常,没有服务器错误异常(默认)
  • WriteConcern.SAFE 抛出网络错误异常、服务器错误异常;并等待服务器完成写操作
  • WriteConcern.MAJORITY 抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作
  • WriteConcern.FSYNC_SAFE 抛出网络错误异常、服务器错误异常;并等待服务器将写操作刷新到磁盘
  • WriteConcern.JOURNAL_SAFE 抛出网络错误异常、服务器错误异常;并等待服务器将写操作提交到磁盘的日志文件
  • WriteConcern.REPLICAS_SAFE 抛出网络错误异常、服务器错误异常;并等待至少2台服务器完成写操作`

相关文章

网友评论

    本文标题:MongoDB - 文档

    本文链接:https://www.haomeiwen.com/subject/zliblftx.html