提要:本章强化document概念及基础CURD 文档document MongoDB以BSON文档的形式存储数据记录,BSON是JSON的二进制表现形式,但是BSON支持的数据类型要多于JSON。 文档结构:{field1:value1,field2:value2,field3:value3,。。。fieldN:valueN} 文档以fieldvalue对的形式组成,value可以是任何BSON支持的数据类型。可以是对象也可以是数组或者包含对象的数组,这种在Mongo中成为嵌入文档。如下{id:ObjectId(5099803df3f4948bd2f98391),name:{first:Alan,last:Turing},birth:ISODate(20180511T05:58:51。122Z),death:ISODate(20220511T05:58:51。122Z),contribs:〔Turingmachine,Turingtest,Turingery〕,views:1250000} 字段名限制字段名都是string类型id是保留的主键的关键字,它的value必须是全局唯一的。id字段如果有子字段,字段名不能以开头。字段名不能包含null字符服务器允许字段中包含。和(MongoDB5。0开始支持) 文档限制一条文档最大不可超过16MBson文档中的字段是有序的。查询的时候,如条件{a:1,b:1}{a:1,b:1}但是{a:1,b:1}!{b:1,a:1},这可能导致查询引擎查询时重排序。 CURD操作 创建文档:单条插入语法db。collection。insertOne(document,文档Bson{可选参数writeConcern:document})示例商品products集合中插入一条文档db。products。insertOne({item:card,qty:15});返回结果{acknowledged:true,insertedId:ObjectId(56fc40f9d735c28df206d078)插入文档未指定id是系统自己生成唯一id并返回,建议使用系统生成的id}多条插入语法db。collection。insertMany(〔document1,document2,。。。〕,此参数为要插入的文档数组{可选参数writeConcern:document,ordered:boolean})示例db。products。insertMany(〔{item:card,qty:15},{item:envelope,qty:20},{item:stamps,qty:30}〕);返回结果{acknowledged:true,insertedIds:〔ObjectId(562a94d381cb9f1cd6eb0e1a),ObjectId(562a94d381cb9f1cd6eb0e1b),ObjectId(562a94d381cb9f1cd6eb0e1c)〕} 查询文档查询文档db。collection。find(query,projection)query参数为查询条件projection可选参数,为指定返回结果包括哪些字段示例查询商品集合中item是card的记录db。products。find({item:card,})返回结果{item:card,qty:15} note:下章节详细讲解各种查询的写法和操作符的使用。 修改文档语法db。collection。updateOne(filter,查询条件,写法与查询中的条件一直update,要修改得字段{可选参数upsert:boolean,writeConcern:document,collation:document,arrayFilters:〔filterdocument1,。。。〕,hint:documentstring}示例将item是crad的qty字段改为3set为操作符db。products。updateOne({item:card},{set:{qty:3}}); 删除文档语法db。collection。deleteOne(filter,删除指定条件的文档{可选参数writeConcern:document,collation:document,hint:documentstringAvailablestartinginMongoDB4。4})示例删除指定id的数据db。products。deleteOne({id:ObjectId(562a94d381cb9f1cd6eb0e1a)}); 接下来的章节会详细讲解各种情况的查询和修改使用案例,力求最全。