mongodb|文档操作---增删查
- 文档管理 #数据类型 | Type | 描述 | | ------------------ | ------------------------------------------------------------ | | **ObjectID** | 用于存储文档的ID,相当于主键,mongoDB中就是一个对象的返回值 | | **String** | 字符串是最常用的数据类型,MongoDB中的字符串必须是UTF-8编码。 | | **Integer** | 整数类型用于存储数值。整数可以是32位,也可以是64位,这取决于你的服务器。 | | **Double** | 双精度类型用于存储浮点值,mongodb中没有float浮点数这个说法 | | **Boolean** | 布尔类型用于存储布尔值(true/ false) | | **Arrays** | 将数组、列表或多个值存储到一个键 | | **Timestamp** | 时间戳,用于记录文档何时被修改或创建。Date(),Timestamp(),ISODate() | | **Object** | 用于嵌入文档, 相当于子属性是另一个json而已 | | **Null** | 空值,相当于 python的None | | Symbol | 与字符串用法相同,常用于某些使用特殊符号的语言 | | Date | 用于以UNIX时间格式存储当前日期或时间。 | | **Binary data** | 二进制数据 | | Code | 用于将JavaScript代码存储到文档中 | | Regular expression | 正则表达式 | #### 添加文档 > 文档的数据结构和 JSON 基本一样。所有存储在集合中的数据都是 BSON 格式。 > > BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。 ```javascript # 添加文档 # 方式1: db.集合.insert(<document>) # document就是一个json # 方式2: db.集合.insertOne( # 如果文档存在_id主键为更新数据,否则就添加数据。 <document> ) # 方式3 # 一次性添加多个文档, 多次给同一个集合建议使用insertMany比insertOne效率更好 db.集合.insertMany( [ <document> , <document>, ... ] ) ``` 操作: ```javascript use mofang; // 添加一条数据 db.user_list.insert({"name":"laoli","age":33,"sex":true,"child":{"name":"xiaohuihui","age":3}}); // WriteResult({ "nInserted" : 1 }) // 添加一条数据 db.user_list.insertOne({"name":"xiaozhang","age":18,"sex":true}); // { // "acknowledged" : true, // "insertedId" : ObjectId("605021e6d5c7a55cc95c1cb7") // } // 添加多条数据 document1 = {"name":"xiaolan","age":16} document2 = {"name":"xiaoguang","age":16} db.user_list.insertMany([document1,document2]); // { // "acknowledged" : true, // "insertedIds" : [ // ObjectId("60502235d5c7a55cc95c1cba"), // ObjectId("60502235d5c7a55cc95c1cbb") // ] // } ``` #### 删除文档 ```json db.集合.remove( <query>, // removed的条件,一般写法:{"属性":{条件:值}},如果不填写条件,删除所有文档 { justOne: <boolean>, // 可选删除,是否只删除查询到的第一个文档,默认为false,删除所有 writeConcern: <document> // 可选参数,抛出异常的级别。 } ) ``` 操作: ```javascript // 删除满足条件的第一条数据 db.user_list.remove({"age":17},{"justOne":true}) // 删除满足条件的所有数据 db.user_list.remove({"name":"laowang"}); ``` #### 查询文档 ```json // 直接显示查询的所有,find和findOne的第二个参数,也是一个json对象,一般称之为字段投影,表示设置是否显示或隐藏指定数据字段。 // 获取一条 db.集合.findOne( <query>, // 查询条件 { <key>: 0, // 隐藏指定字段,例如:"_id":0, <key>: 1, // 显示指定字段,例如:"title":1, .... } ) // 获取多条 db.集合.find( <query>, // 查询条件 { <key>: 0, // 隐藏指定字段,例如:"_id":0, <key>: 1, // 显示指定字段,例如:"title":1, .... } ) # 以易读的方式来格式化显示读取到的数据,只能在find方法后面使用。 db.集合.find().pretty() ```
示例:
db.user_list.find() { "_id" : ObjectId("61a4dd1106540c0fb8f363ee"), "name" : "xiaolan", "age" : 16 } { "_id" : ObjectId("61a4dd1106540c0fb8f363ef"), "name" : "xiaoguang", "age" : 16 } { "_id" : ObjectId("61a57d01ee212c0f351ca60f"), "name" : "laoli", "age" : 33, "sex" : true, "child" : { "name" : "xiaohuihui", "age" : 3 } } { "_id" : ObjectId("61a57d5dee212c0f351ca613"), "name" : "xiaozhang", "age" : 18, "sex" : true } { "_id" : ObjectId("61a57d5fee212c0f351ca614"), "name" : "xiaozhang", "age" : 18, "sex" : true } > db.user_list.find().pretty() { "_id" : ObjectId("61a4dd1106540c0fb8f363ee"), "name" : "xiaolan", "age" : 16 }
......
db.user_list.findOne() { "_id" : ObjectId("61a4dd1106540c0fb8f363ee"), "name" : "xiaolan", "age" : 16 } > db.user_list.findOne()._id ObjectId("61a4dd1106540c0fb8f363ee") > db.user_list.findOne().name xiaolan
> db.user_list.find({},{"_id":0}) # 不显示id,0表示隐藏id { "name" : "xiaolan", "age" : 16 } { "name" : "xiaoguang", "age" : 16 } { "name" : "laoli", "age" : 33, "sex" : true, "child" : { "name" : "xiaohuihui", "age" : 3 } } { "name" : "xiaozhang", "age" : 18, "sex" : true } { "name" : "xiaozhang", "age" : 18, "sex" : true }
> db.user_list.find({},{"name":1}) { "_id" : ObjectId("61a4dd1106540c0fb8f363ee"), "name" : "xiaolan" } { "_id" : ObjectId("61a4dd1106540c0fb8f363ef"), "name" : "xiaoguang" } { "_id" : ObjectId("61a57d01ee212c0f351ca60f"), "name" : "laoli" } { "_id" : ObjectId("61a57d5dee212c0f351ca613"), "name" : "xiaozhang" } { "_id" : ObjectId("61a57d5fee212c0f351ca614"), "name" : "xiaozhang" } > db.user_list.find({},{"name":1,"_id":0}) { "name" : "xiaolan" } { "name" : "xiaoguang" } { "name" : "laoli" } { "name" : "xiaozhang" } { "name" : "xiaozhang" }
> db.user_list.find({"age":{$lt:18}}) # 小于 { "_id" : ObjectId("61a4dd1106540c0fb8f363ee"), "name" : "xiaolan", "age" : 16 } { "_id" : ObjectId("61a4dd1106540c0fb8f363ef"), "name" : "xiaoguang", "age" : 16 } > db.user_list.find({"age":{$lte:18}}) #小于等于 { "_id" : ObjectId("61a4dd1106540c0fb8f363ee"), "name" : "xiaolan", "age" : 16 } { "_id" : ObjectId("61a4dd1106540c0fb8f363ef"), "name" : "xiaoguang", "age" : 16 } { "_id" : ObjectId("61a57d5dee212c0f351ca613"), "name" : "xiaozhang", "age" : 18, "sex" : true } { "_id" : ObjectId("61a57d5fee212c0f351ca614"), "name" : "xiaozhang", "age" : 18, "sex" : true } > db.user_list.find({"age":{$gt:18}}) { "_id" : ObjectId("61a57d01ee212c0f351ca60f"), "name" : "laoli", "age" : 33, "sex" : true, "child" : { "name" : "xiaohuihui", "age" : 3 } } > db.user_list.find({"age":{$gte:18}}) { "_id" : ObjectId("61a57d01ee212c0f351ca60f"), "name" : "laoli", "age" : 33, "sex" : true, "child" : { "name" : "xiaohuihui", "age" : 3 } } { "_id" : ObjectId("61a57d5dee212c0f351ca613"), "name" : "xiaozhang", "age" : 18, "sex" : true } { "_id" : ObjectId("61a57d5fee212c0f351ca614"), "name" : "xiaozhang", "age" : 18, "sex" : true } > db.user_list.find({"age":{$in:[16,33]}}) # 在16到33之间 { "_id" : ObjectId("61a4dd1106540c0fb8f363ee"), "name" : "xiaolan", "age" : 16 } { "_id" : ObjectId("61a4dd1106540c0fb8f363ef"), "name" : "xiaoguang", "age" : 16 } { "_id" : ObjectId("61a57d01ee212c0f351ca60f"), "name" : "laoli", "age" : 33, "sex" : true, "child" : { "name" : "xiaohuihui", "age" : 3 } }
# and or查询
// 查询age=18 并且 sex=true db.user_list.find({ $and:[ {"age":{$eq:18}}, {"sex":{$eq:true}} ] }) // 简写: db.user_list.find({ $and:[ {"age":18}, {"sex":true} ] }) // 继续简写; db.user_list.find({ "age":18, "sex":true}) // 查询age=16或者age=18 db.user_list.find({ $or:[ {"age":{$eq:16}}, {"age":{$eq:18}} ] }) // 查询年龄!=16的 db.user_list.find({"age":{$not:{$eq:16}}}) db.user_list.find({"age":{$ne:16}}) // 查询age=33的男生 或者 age=18的男生 db.user_list.find({ "sex":true, $or:[ {"age":18}, {"age":33} ] }); db.user_list.find({ "sex":true, "age":{ $in:[18,33] } }); db.user_list.find({ $or:[ {$and:[{"sex":true},{"age":18}]}, {$and:[{"sex":true},{"age":33}]}, ] }); db.user_list.find({ $or:[ {"sex":true,"age":18}, {"sex":true,"age":33}, ] });