MongoDB CURD操作 ========================================================================================================================== 一、介绍 MongoDB CRUD操作包括 create、read、update、delete。 二、create 操作 1、创建或插入一个 document 到一个 collection 中时,如果 collection 不存在,则创建或插入操作将自动创建一个 collection。 2、insert document 1、语法格式 db.COLLECTION_NAME.insertOne() db.COLLECTION_NAME.insertMany() 2、说明 如果在添加文档时没有指定 id 字段,则 mongod 将自动添加 id 到文档中。 如果手动指定了 id 的值,则 id 值必须唯一,避免重复的键错误。 2、示例 指定 _id db.TestCollection.insertOne( { _id: 1, "name": "ta", "age": 3} ) 不指定 _id db.TestCollection.insertOne( { "name": "xuejinwei", "age": "1"} ) 3、写操作安全应答机制(Write Concern) 文档地址:https://docs.mongodb.com/manual/reference/write-concern/ 1、解释 MongoDB为了保证数据的一致性,加入写入的安全机制 Write Concern。默认情况下,对 MongoDB 数据库的改变,客户端都会等待 数据库的响应,确认数据是否改变成功。 安全写入方式有两种:应答式写入、非应答式写入。客户端调用 db.getLastError() 方法,此方式会捕获错误,如果捕获到错误, 则客户端会尝试客户端定义的逻辑再次写入或进行其他操作。 2、使用格式 db.products.insertOne( { "item": "envelopes", "qty": 100, type: "Self-Sealing" }, { writeConcern: { w : "majority", wtimeout : 100 } } ) 3、参数意义 { writeConcern: { w : "majority", wtimeout : 100 } } w 的可选值: 1 # 确保操作已经写入到单个 MongoDB 实例中,默认值 0 # 不返回任何响应,因此不会收到是否写入成功 >1 # 设定成功写入到节点的数量 majority # 设定写入操作已经成功传递到大多数节点 # j 的可选值: true # 要求写入操作写入 journal 日志后给客户端应答 false wtimeout 可选值: 超时时长。设定一个时间值,防止写操作被无限制阻塞。单位为 ms 。 4、插入多个文档操作 1、示例 db.TestCollection.insertMany([ { name: "xiaoli", age: "12", weight: "50" }, { name: "xiaozhao", age: "14", weight: "51" }, { name: "xiaoxue", age: "15", weight: "61" } ]) 三、Read 操作 1、语法格式 db.COLLECTION_NAME.find() 2、查找集合中的全部文档 db.inventory.find( {} ) 3、使用过滤操作示例 1、使用比较符号 db.collection.find( { qty: { $gt: 4 } } ) 2、指定_id db.bios.find( { _id: 5 } ) # 查询 _id 等于 5 的文档 3、指定两个_id db.bios.find( # 查询 _id 等于 5 和 ObjectId等于 507c35dd8fada716c89d0013 的文档 { _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } } ) 4、查找一个范围 db.TestCollection.find( { _id:{ $gt: 0, $lt: 3} } ) 5、查询包含数组的文档(范围查询) db.students.find( { score: { $gt: 0, $lt: 2 } } ) # 说明:只要任意个元素符合条件即被匹配到。 db.bios.find( { contribs: "UNIX" } ) 、注意 1、比较运算符仅对目标字段的BSON类型与查询操作数的类型匹配的文档执行比较。 2、db.COLLECTION_NAME.find()支持多文档事务。 3、查找帮助信息 db.mycoll.find().help() 四、其他命令使用 1、查看集合状态 db.COLLECTION_NAME.stats() 2、统计某个集合中文档个数 db.COLLECTION_NAME.find().count() 37016 ==========================================================================================================================