您的位置:首页 > 文旅 > 美景 > 平台公司拿地_科技布沙发_淘宝热搜关键词排行榜_深圳网站seo推广

平台公司拿地_科技布沙发_淘宝热搜关键词排行榜_深圳网站seo推广

2024/12/26 11:44:48 来源:https://blog.csdn.net/m0_56182317/article/details/144230427  浏览:    关键词:平台公司拿地_科技布沙发_淘宝热搜关键词排行榜_深圳网站seo推广
平台公司拿地_科技布沙发_淘宝热搜关键词排行榜_深圳网站seo推广

文章目录

  • 概念
  • 操作数据库语法
    • 数据库及文档操作
    • 文档操作
  • 整合springboot的MongoTemplate用法
  • springboot配置
    • 插入
    • 删除
    • 更新
    • 查询

概念

1.MongoDB 是一个文档数据库,数据以 BSON 方式存储(类似于json)
2.文档(Document):类似于mysql的一行数据
3.集合(Collection):类似于mysql的一张表
4.数据库(Database):一个数据库中可以有多个集合
5.主键,MongoDB自动将“_id”字段设置为主键,id会自动生成
6.不支持表连接(join)
7.MongoDB的文档不能有重复的键
8.文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
9.以下划线"
"开头的键是保留的(不是严格要求的)。

10.常用数据类型(不止这些):
String 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean 布尔值。用于存储布尔值(真/假)。
Double 双精度浮点值。用于存储浮点值。
Object 用于内嵌文档。
Null 用于创建空值。
Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。

操作数据库语法

数据库及文档操作

# 展示当前使用数据库
db
# 整个mongo状态
db.stats();
# 指定使用数据库,随后如果想这个库中插入入数据则会创建
use test
# 随便指定一个集合名称并插入一条数据便会创建集合并插入
db.a.insert({name: "zs"
})// 新建一个test库,库中新建一个a集合,集合中插入一条数据

文档操作

# 新增一个
db.collection.insertOne({name: "John",age: 30
})
# 新增多个
db.collection.insertMany([{name: "Alice", age: 25},{name: "Bob", age: 28}
])# 删一个
db.collection.deleteOne({name: "John"})
# 删多个
db.collection.deleteMany({age: {$lt: 30}})# 修改一个
db.collection.updateOne({name: "John"},        // 查询条件{$set: {age: 31}},      // 更新操作{upsert: true}         // 如果文档不存在,则插入新文档
)
# 修改多个
db.collection.updateMany({name: "John"},        // 查询条件{$set: {age: 31}},     // 更新操作{upsert: true}         // 如果文档不存在,则插入新文档
)# 查
// 查所有
db.a.find()
// 条件查询// && 查询name=123并且age=18的文档
db.a.find({name : "fs", age : 18}) 
// != username不为joe的文档
db.a.find({"username" : {"$ne" : "joe"}})
// or ticket_no为725或winner为true
db.users.find({"$or" : [{"ticket_no" : 725}, {"winner" : true}]}) //指定返回字段
// name为fs,但只返回name和age字段
db.a.find({name : "fs"}, {"name" : 1, "age" : 1})
// name为fs,但不返回name和age字段
db.a.find({name : "fs"}, {name : 0, age : 0})// in / not in
//ticket_no值为725, 542, 390
db.a.find({"ticket_no" : {"$in" : [725, 542, 390]}}) 
//ticket_no值不为725, 542, 390
db.a.find({"ticket_no" : {"$nin" : [725, 542, 390]}}) // id_num除以 5 的余数等于 1 的文档
db.users.find({"id_num" : {"$mod" : [5, 1]}}) select * from users where (id_num mod 5) = 1// not age 不等于27
db.users.find({"$not": {"age" : 27}})// username = null 且 文档中存在username字段
db.users.find({"username" : {"$in" : [null], "$exists" : true}})// object
//嵌套查询 name对象的first为Joe,name对象的last为Schmoe
db.people.find({ "name.first": "Joe", "name.": "Schmoe" })// array
// 对数组的查询, 字段fruit中,既包含"apple",又包含"banana"的纪录
db.food.find({fruit : {$all : ["apple", "banana"]}}) 
// 对数组的查询, 查询数组元素个数是3的记录,$size前面无法和其他的操作符复合使用
db.food.find({"fruit" : {"$size" : 3}}) 
//文档的 comments 数组中必须包含至少一个子文档,该子文档满足:author 为 "joe"。score 大于等于 5。
db.blog.find({"comments": {"$elemMatch": {"author": "joe","score": { "$gte": 5 }}}
})//按x升序排,-1则降序,获取排序后的第 11 条记录(基于 0 索引,即跳过前 10 条记录后获取第 1 条记录)。
db.foo.find().sort({"x" : 1}).limit(1).skip(10);//分组
db.sales.aggregate([{$group: {_id: "$category",count: { $sum: 1 },          // 商品数量totalPrice: { $sum: "$price" }, // 总价格avgPrice: { $avg: "$price" },   // 平均价格maxPrice: { $max: "$price" }    // 最高价格}}
])
// 分组返回结果
[{ "_id": "electronics", "count": 3, "totalPrice": 450, "avgPrice": 150, "maxPrice": 200 },{ "_id": "clothing", "count": 2, "totalPrice": 130, "avgPrice": 65, "maxPrice": 80 }
]

整合springboot的MongoTemplate用法

springboot配置

引入maven依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>

// yml配置

spring:data:mongodb:host: 127.0.0.1port: 27017database: test# 默认没有,有的可以加上#username: admin# 默认没有,有的可以加上#password: 123456

插入

    private void insert() {mongoTemplate.insert(new UserInfo());mongoTemplate.insert(new UserInfo(), "userInfo");mongoTemplate.save(new UserInfo());}

删除

    private void remove() {mongoTemplate.remove(new UserInfo());DeleteResult deleteResult = mongoTemplate.remove(new UserInfo(), "userInfo");// 是否执行成功deleteResult.wasAcknowledged();// 删除数量deleteResult.getDeletedCount();}

更新

    private void update() {// 原子操作Update update = new Update();update.inc("number", 1);// 批量更新mongoTemplate.updateMulti(new Query(), update, UserInfo.class);// 更新第一条mongoTemplate.updateFirst(new Query(), update, UserInfo.class);// 更新数据, 如果不存在就插入UpdateResult updateResult = mongoTemplate.upsert(new Query(), update, UserInfo.class);// 是否执行成功updateResult.wasAcknowledged();// 匹配到的数量updateResult.getMatchedCount();// 更新数量updateResult.getModifiedCount();// 插入新数据的idBsonValue upsertedId = updateResult.getUpsertedId();}

查询

// 精确查询 { "username" : "admin" } 初始化 criteria 实例的两种方法Criteria criteria = Criteria.where("username").is("admin");Criteria cri = new Criteria("username").is("admin");// 不等于查询 { "username" : { $ne : "admin" } }Criteria ne = Criteria.where("username").ne("admin");// 模糊查询 { "username" : /admin/ }Criteria regex = Criteria.where("username").regex("^.*" + "admin" + ".*$");// and 查询 { "username" : "admin", "phoneNumber" : "10086" }Criteria and = criteria.and("phoneNumber").is("10086");and = new Criteria().andOperator(Criteria.where("username").is("admin"),Criteria.where("phoneNumber").is("10086"));// or 查询 $or:[ { "username" : "admin" }, { "username" : "anonymous" } ]Criteria or = criteria.orOperator(Criteria.where("username").is("admin"),Criteria.where("username").is("anonymous"));// in 查询 { "username" : { $in: ["admin", "anonymous"] } }Criteria in = Criteria.where("username").in(Lists.newArrayList("admin", "anonymous"));// nin 查询 { "username" : { $nin: ["admin", "anonymous"] } }Criteria nin = Criteria.where("username").nin(Lists.newArrayList("admin", "anonymous"));// lt/lte 比较查询// 小于等于 { "crtDateTime": { $lte: ISODate("2001-01-01T00:00:00.000+08:00") } }Criteria lte = Criteria.where("crtDateTime").lte(LocalDateTime.now());// { "age": { $lte: 18 } }lte = Criteria.where("age").lte(18);// 小于 { "crtDateTime": {$lt: ISODate("2001-01-01T00:00:00.000+08:00") } }Criteria lt = Criteria.where("crtDateTime").lt(LocalDateTime.now());// { "age": { $lt: 18 } }lt = Criteria.where("age").lt(18);// gt/gte 比较查询// 大于等于 { "crtDateTime": {$gte: ISODate("2001-01-01T00:00:00.000+08:00") } }Criteria gte = Criteria.where("crtDateTime").gte(LocalDateTime.now());// { "age": { $gte: 18 } }gte = Criteria.where("age").gte(18);// 大于 { "crtDateTime": {$gt: ISODate("2001-01-01T00:00:00.000+08:00") } }Criteria gt = Criteria.where("crtDateTime").gt(LocalDateTime.now());// { "age": { $gt: 18 } }gt = Criteria.where("age").gt(18);// 查询内嵌文档 { "usernameList" : { $elemMatch: { "username" : "admin" } } }Criteria elemMatch = Criteria.where("usernameList").elemMatch(Criteria.where("username").is("admin"));// api 中无具体接口的, 使用 document 拼接语句查询 { $expr : { $ne : [ "$A", "$B" ] } }Criteria andDocumentStructureMatches = criteria.andDocumentStructureMatches(() ->new Document().append("$expr", new Document("$ne", List.of("$A", "$B"))));private void query() {// 组装查询条件(参数 Criteria 的详细用法见 criteriaUsageSample())Query query = new Query(Criteria.where("username").is("admin"));// 查询唯一一条满足条件的数据(如果满足条件的数据多于1条,会报错)UserInfo one = mongoTemplate.findOne(query, UserInfo.class);// 查询满足条件的数据列表List<UserInfo> list = mongoTemplate.find(query, UserInfo.class);// 查询所有记录List<UserInfo> all = mongoTemplate.findAll(UserInfo.class);// 根据 filed 去重查询List<UserInfo> distinctList = mongoTemplate.findDistinct(query, "username", UserInfo.class, UserInfo.class);// 查询总数long count = mongoTemplate.count(query, UserInfo.class);}

参考:https://juejin.cn/post/7162094909045309470

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com