返回顶部
首页 > 资讯 > 后端开发 > JAVA >java操作mongodb源码
  • 676
分享到

java操作mongodb源码

mongodbjavaspringboot 2023-09-13 22:09:09 676人浏览 安东尼
摘要

文章目录 案例一:MongoClient最简单操作1、优缺点2、添加依赖3、源码 案例二:继承MongoRepository1、优缺点2、接口类继承MongoRepository3、ser

文章目录

案例一:MonGoClient最简单操作

1、优缺点

  • 优点:简单,快速测试实现
  • 缺点:不适合项目整合使用

2、添加依赖

<dependency>    <groupId>org.mongoDBgroupId>    <artifactId>mongo-java-driverartifactId>    <version>3.12.10version>dependency>

3、源码

package com.detail.util;import java.util.ArrayList;import java.util.List;import org.bson.Document;import org.bson.conversions.Bson;import com.mongodb.MongoClient;import com.mongodb.MongoCredential;import com.mongodb.ServerAddress;import com.mongodb.client.FindIterable;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;import com.mongodb.client.model.Filters; //mongodb 连接数据库工具public class MongoDBUtil {    //不通过认证获取连接数据库对象    public static MongoDatabase getConnect(){        //连接到 mongodb 服务        MongoClient mongoClient = new MongoClient("服务器ip", 27017);         //连接到数据库        MongoDatabase mongoDatabase = mongoClient.getDatabase("test");         //返回连接数据库对象        return mongoDatabase;    }     //需要密码认证方式连接    public static MongoDatabase getAuthConnect(){        List<ServerAddress> adds = new ArrayList<>();        //ServerAddress()两个参数分别为 服务器地址 和 端口        ServerAddress serverAddress = new ServerAddress("服务器ip", 27017);        adds.add(serverAddress);                List<MongoCredential> credentials = new ArrayList<>();        //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码        MongoCredential mongoCredential = MongoCredential.createScramSha1Credential("root", "test", "root".toCharArray());        credentials.add(mongoCredential);                //通过连接认证获取MongoDB连接        MongoClient mongoClient = new MongoClient(adds, credentials);         //连接到数据库        MongoDatabase mongoDatabase = mongoClient.getDatabase("test");         //返回连接数据库对象        return mongoDatabase;    }    //插入一个文档    public void insertOneTest(){        //获取数据库连接对象        MongoDatabase mongoDatabase = MongoDBUtil.getConnect();        //获取集合        MongoCollection<Document> collection = mongoDatabase.getCollection("user");        //要插入的数据        Document document = new Document("name","张三")    .append("sex", "男")    .append("age", 18);        //插入一个文档        collection.insertOne(document);    }  //插入多个文档    public void insertManyTest(){        //获取数据库连接对象        MongoDatabase mongoDatabase = MongoDBUtil.getConnect();        //获取集合        MongoCollection<Document> collection = mongoDatabase.getCollection("user");        //要插入的数据        List<Document> list = new ArrayList<>();        for(int i = 1; i <= 3; i++) {            Document document = new Document("name", "张三")                    .append("sex", "男")                    .append("age", 18);            list.add(document);        }        //插入多个文档        collection.insertMany(list);    }  //删除与筛选器匹配的单个文档    public void deleteOneTest(){        //获取数据库连接对象        MongoDatabase mongoDatabase = MongoDBUtil.getConnect();        //获取集合        MongoCollection<Document> collection = mongoDatabase.getCollection("user");        //申明删除条件        Bson filter = Filters.eq("age",18);        //删除与筛选器匹配的单个文档        collection.deleteOne(filter);    }  //删除与筛选器匹配的所有文档    public void deleteManyTest(){        //获取数据库连接对象        MongoDatabase mongoDatabase = MongoDBUtil.getConnect();        //获取集合        MongoCollection<Document> collection = mongoDatabase.getCollection("user");        //申明删除条件        Bson filter = Filters.eq("age",18);        //删除与筛选器匹配的所有文档        collection.deleteMany(filter);    }  //修改单个文档    public void updateOneTest(){        //获取数据库连接对象        MongoDatabase mongoDatabase = MongoDBUtil.getConnect();        //获取集合        MongoCollection<Document> collection = mongoDatabase.getCollection("user");        //修改过滤器        Bson filter = Filters.eq("name", "张三");        //指定修改的更新文档        Document document = new Document("$set", new Document("age", 100));        //修改单个文档        collection.updateOne(filter, document);    }  //修改多个文档    public void updateManyTest(){        //获取数据库连接对象        MongoDatabase mongoDatabase = MongoDBUtil.getConnect();        //获取集合        MongoCollection<Document> collection = mongoDatabase.getCollection("user");        //修改过滤器        Bson filter = Filters.eq("name", "张三");        //指定修改的更新文档        Document document = new Document("$set", new Document("age", 100));        //修改多个文档        collection.updateMany(filter, document);    }  //查找集合中的所有文档    public void findTest(){        //获取数据库连接对象//        MongoDatabase mongoDatabase = MongoDBUtil.getAuthConnect();        MongoDatabase mongoDatabase = MongoDBUtil.getConnect();        //获取集合        MongoCollection<Document> collection = mongoDatabase.getCollection("customer");        //查找集合中的所有文档        FindIterable findIterable = collection.find();        MongoCursor cursor = findIterable.iterator();        while (cursor.hasNext()) {            System.out.println(cursor.next());        }    }  //指定查询过滤器查询    public void FilterfindTest(){        //获取数据库连接对象        MongoDatabase mongoDatabase = MongoDBUtil.getConnect();        //获取集合        MongoCollection<Document> collection = mongoDatabase.getCollection("user");        //指定查询过滤器        Bson filter = Filters.eq("name", "张三");        //指定查询过滤器查询        FindIterable findIterable = collection.find(filter);        MongoCursor cursor = findIterable.iterator();        while (cursor.hasNext()) {            System.out.println(cursor.next());        }    }  //取出查询到的第一个文档    public void findFirstTest(){        //获取数据库连接对象        MongoDatabase mongoDatabase = MongoDBUtil.getConnect();        //获取集合        MongoCollection<Document> collection = mongoDatabase.getCollection("user");        //查找集合中的所有文档        FindIterable findIterable = collection.find();        //取出查询到的第一个文档        Document document = (Document) findIterable.first();        //打印输出        System.out.println(document);    }    public static void main(String[] args) {    MongoDBUtil mongodb = new MongoDBUtil();    mongodb.findTest();}}

案例二:继承MongoRepository

懒得搭建,需要的话进扣扣裙索要,783092701

1、优缺点

  • 优点:适合SpringBoot项目整合,分层操作
  • 缺点:不支持过滤条件分组。即不支持过滤条件用 or(或) 来连接,所有的过滤条件,都是简单一层的用 and(并且) 连接不支持两个值的范围查询,如时间范围的查询

2、接口类继承MongoRepository

package com.yhzq.dao.repository;import org.springframework.data.mongodb.repository.MongoRepository;import org.springframework.stereotype.Component;import com.yhzq.dao.entity.Customer;import java.util.List;public interface BaseRepository extends MongoRepository<Customer, String> {Customer findByFirstName(String firstName);    List<Customer> findByLastName(String lastName);}

3、service类注入接口BaseRepository

package com.yhzq.service;import org.springframework.data.domain.Example;import org.springframework.data.domain.Sort;import org.springframework.stereotype.Service;import com.yhzq.dao.entity.Customer;import com.yhzq.dao.repository.BaseRepository;import javax.annotation.Resource;import java.util.List;@Servicepublic class CustomerService{    @Resource    private BaseRepository repository;        public List<Customer> saveAll(Iterable<Customer> iterable) {    return repository.saveAll(iterable);    }        public Customer save(Customer customer) {        Customer save = repository.save(customer);        return save;    }        public void deleteAll() {        repository.deleteAll();    }        public void deleteAll(Customer customer) {        repository.delete(customer);    }        public void deleteAll(Iterable<? extends Customer> entities) {        repository.deleteAll(entities);    }        public void deleteById(String id) {        repository.deleteById(id);    }            public List<Customer> findAll() {        return repository.findAll();    }        public Iterable<Customer> findAll(Sort sort) {        return repository.findAll(sort);    }        public Iterable<Customer> findAll(Example<Customer> example) {        return repository.findAll(example);    }        public Iterable<Customer> findAllById(Iterable<String> ids) {        return repository.findAllById(ids);    }        public Customer findByFirstName(String firstName) {        return repository.findByFirstName(firstName);    }        public List<Customer> findByLastName(String lastName) {        return repository.findByLastName(lastName);    }}

4、controller类注入service类

package com.yhzq.controller;import java.util.List;import javax.annotation.Resource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.WEB.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.yhzq.dao.entity.Customer;import com.yhzq.service.CustomerService;@RestControllerpublic class CustomerController{private static final Logger log = LoggerFactory.getLogger(CustomerController.class);@Resource    private CustomerService service;@RequestMapping("/customer")public Customer save(){Customer customer = new Customer("wang","baoluo");        Customer save = service.save(customer);        log.info("save:"+save);        return save;    }@RequestMapping("/list")public List<Customer> findAll() {List<Customer> findAll = service.findAll();log.info("findAll:"+findAll);return findAll;}}

案例三:使用MongoTemplate

懒得搭建,需要的话进扣扣裙索要,783092701

1、优缺点

  • 优点:擅长复杂查询,条件查询,聚合查询
  • 缺点:不支持返回固定字段

2、MongoTemplate结合Query

2.1 实现一:使用Criteria封装增删改查条件

在这里插入图片描述

2.1.1 Dao注入mongotemplate

package com.example.dao;import com.example.entity.MongodbTest;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Criteria;import org.springframework.data.mongodb.core.query.Query;import org.springframework.data.mongodb.core.query.Update;import org.springframework.stereotype.Component;@Componentpublic class MongodbTestDao {    @Autowired    private MongoTemplate mongoTemplate;        public void save(MongodbTest test) {        mongoTemplate.insert(test);    }        public MongodbTest findOne(String name) {        Query query = new Query(Criteria.where("name").is(name));        MongodbTest mgt = mongoTemplate.findOne(query,MongodbTest.class);        return mgt;    }        public void updateMongoDb(MongodbTest test) {        Query query = new Query(Criteria.where("id").is(test.getId()));        Update update = new Update().set("age",test.getAge()).set("name",test.getName());        mongoTemplate.updateFirst(query,update,MongodbTest.class);    }        public void removeMongodb(String id) {        Query query = new Query(Criteria.where("id").is(id));        mongoTemplate.remove(query,MongodbTest.class);    }}

2.1.2 Service注入Dao

package com.example.service;import com.example.dao.MongodbTestDao;import com.example.entity.MongodbTest;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Servicepublic class MongodbTestService {    @Autowired    private MongodbTestDao mongodbTestDao;        public void save(){        MongodbTest mongodbTest = new MongodbTest();        mongodbTest.setId(1);        mongodbTest.setAge(19);        mongodbTest.setName("招投标");        mongodbTestDao.save(mongodbTest);    }        public void update() {        MongodbTest mongodbTest = new MongodbTest();        mongodbTest.setId(1);        mongodbTest.setAge(20);        mongodbTest.setName("国网商城");        mongodbTestDao.updateMongoDb(mongodbTest);    }}

2.1.3 Controller层注入service

package com.example.controller;import com.example.service.MongodbTestService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class MongodbTestController {    @Autowired    private MongodbTestService mongodbTestService;        @GetMapping("/save")    public void save() {        mongodbTestService.save();    }    @GetMapping("/update")    public void update() {        mongodbTestService.update();    }    @GetMapping("/delete")    public void update2() {        mongodbTestService.update();    }}

2.2 实现二:使用Example和Criteria封装查询条件

        //把多个条件组合在一起        public static Criteria where(String key) {            return new Criteria(key);        }        //封装查询条件                public static Criteria byExample(Object example) {            return byExample(Example.of(example));        }        //封装查询条件        public static Criteria byExample(Example<?> example) {            return (new Criteria()).alike(example);        }        //匹配文档        public static Criteria matchingDocumentStructure(MongoJSONSchema schema) {            return (new Criteria()).andDocumentStructureMatches(schema);        }        //并且        public Criteria and(String key) {            return new Criteria(this.criteriaChain, key);        }        //是        public Criteria is(@Nullable Object o) {            if (!this.isValue.equals(NOT_SET)) {                throw new InvalidMongoDbapiUsageException("Multiple 'is' values declared. You need to use 'and' with multiple criteria");            } else if (this.lastOperatorWasNot()) {                throw new InvalidMongoDbApiUsageException("Invalid query: 'not' can't be used with 'is' - use 'ne' instead.");            } else {                this.isValue = o;                return this;            }        }        //用于匹配正则表达式        private boolean lastOperatorWasNot() {            return !this.criteria.isEmpty() && "$not".equals(this.criteria.keySet().toArray()[this.criteria.size() - 1]);        }        //不等于        public Criteria ne(@Nullable Object o) {            this.criteria.put("$ne", o);            return this;        }        //小于        public Criteria lt(Object o) {            this.criteria.put("$lt", o);            return this;        }        //小于等于        public Criteria lte(Object o) {            this.criteria.put("$lte", o);            return this;        }        //大于        public Criteria gt(Object o) {            this.criteria.put("$gt", o);            return this;        }        //大于等于        public Criteria gte(Object o) {            this.criteria.put("$gte", o);            return this;        }        //包含        public Criteria in(Object... o) {            if (o.length > 1 && o[1] instanceof Collection) {                throw new InvalidMongoDbApiUsageException("You can only pass in one argument of type " + o[1].getClass().getName());            } else {                this.criteria.put("$in", Arrays.asList(o));                return this;            }        }        //包含        public Criteria in(Collection<?> c) {            this.criteria.put("$in", c);            return this;        }        //与in相反        public Criteria nin(Object... o) {            return this.nin((Collection)Arrays.asList(o));        }        //与in相反        public Criteria nin(Collection<?> o) {            this.criteria.put("$nin", o);            return this;        }        //取模(求余)运算 ,即:key对应的值%value==remainder(求余是否等于remainder)        public Criteria mod(Number value, Number remainder) {            List<Object> l = new ArrayList();            l.add(value);            l.add(remainder);            this.criteria.put("$mod", l);            return this;        }        //key键对应的集合包含col(all是包含关系,in是被包含关系)        public Criteria all(Object... o) {            return this.all((Collection)Arrays.asList(o));        }        public Criteria all(Collection<?> o) {            this.criteria.put("$all", o);            return this;        }        //匹配key所对应的集合的元素的指定数量(!!!不能进行像<5之类的范围匹配)        public Criteria size(int s) {            this.criteria.put("$size", s);            return this;        }        //查询字段是否存在(true:存在,false:不存在)        public Criteria exists(boolean b) {            this.criteria.put("$exists", b);            return this;        }        //基于 bson type来匹配一个元素的类型,像是按照类型ID来匹配        public Criteria type(int t) {            this.criteria.put("$type", t);            return this;        }        public Criteria type(Type... types) {            Assert.notNull(types, "Types must not be null!");            Assert.noNullElements(types, "Types must not contain null.");            this.criteria.put("$type", Arrays.asList(types).stream().map(Type::value).collect(Collectors.toList()));            return this;        }        //取反        public Criteria not() {            return this.not((Object)null);        }        private Criteria not(@Nullable Object value) {            this.criteria.put("$not", value);            return this;        }        //模糊查询用        public Criteria regex(String re) {            return this.regex(re, (String)null);        }        public Criteria regex(String re, @Nullable String options) {            return this.regex(this.toPattern(re, options));        }        public Criteria regex(Pattern pattern) {            Assert.notNull(pattern, "Pattern must not be null!");            if (this.lastOperatorWasNot()) {                return this.not(pattern);            } else {                this.isValue = pattern;                return this;            }        }        public Criteria regex(BsonRegularExpression regex) {            if (this.lastOperatorWasNot()) {                return this.not(regex);            } else {                this.isValue = regex;                return this;            }        }        //        private Pattern toPattern(String regex, @Nullable String options) {            Assert.notNull(regex, "Regex string must not be null!");            return Pattern.compile(regex, options == null ? 0 : BSON.regexFlags(options));        }        public Criteria withinSphere(Circle circle) {            Assert.notNull(circle, "Circle must not be null!");            this.criteria.put("$geoWithin", new GeoCommand(new Sphere(circle)));            return this;        }        public Criteria within(Shape shape) {            Assert.notNull(shape, "Shape must not be null!");            this.criteria.put("$geoWithin", new GeoCommand(shape));            return this;        }        //输出接近某一地理位置的有序文档        public Criteria near(Point point) {            Assert.notNull(point, "Point must not be null!");            this.criteria.put("$near", point);            return this;        }        //指定地理空间查询从最近到最远返回文档的点。 MongoDB 使用球面几何计算$nearSphere的距离        public Criteria nearSphere(Point point) {            Assert.notNull(point, "Point must not be null!");            this.criteria.put("$nearSphere", point);            return this;        }        //        public Criteria intersects(Geojson geoJson) {            Assert.notNull(geoJson, "GeoJson must not be null!");            this.criteria.put("$geoIntersects", geoJson);            return this;        }        //创建一个地理空间标准,与nearSphere一起使用        public Criteria maxDistance(double maxDistance) {            if (!this.createNearCriteriaForCommand("$near", "$maxDistance", maxDistance) && !this.createNearCriteriaForCommand("$nearSphere", "$maxDistance", maxDistance)) {                this.criteria.put("$maxDistance", maxDistance);                return this;            } else {                return this;            }        }        //mongodb地理空间计算逻辑        public Criteria minDistance(double minDistance) {            if (!this.createNearCriteriaForCommand("$near", "$minDistance", minDistance) && !this.createNearCriteriaForCommand("$nearSphere", "$minDistance", minDistance)) {                this.criteria.put("$minDistance", minDistance);                return this;            } else {                return this;            }        }        //匹配查询        public Criteria elemMatch(Criteria c) {            this.criteria.put("$elemMatch", c.getCriteriaObject());            return this;        }        //使用给定对象作为模式创建条件        public Criteria alike(Example<?> sample) {            this.criteria.put("$example", sample);            this.criteriaChain.add(this);            return this;        }        //创建一个criteria ($jsonSchema),根据MongoJsonSchema定义的给定结构匹配文档        public Criteria andDocumentStructureMatches(MongoJsonSchema schema) {            Assert.notNull(schema, "Schema must not be null!");            Criteria scheMacriteria = new Criteria();            schemaCriteria.criteria.putAll(schema.toDocument());            return this.reGISterCriteriaChainElement(schemaCriteria);        }        public Criteria.BitwiseCriteriaoperators bits() {            return new Criteria.BitwiseCriteriaOperatorsImpl(this);        }        //或者                public Criteria orOperator(Criteria... criteria) {            BasicDBList bsonList = this.createCriteriaList(criteria);            return this.registerCriteriaChainElement((new Criteria("$or")).is(bsonList));        }        //非或者        public Criteria norOperator(Criteria... criteria) {            BasicDBList bsonList = this.createCriteriaList(criteria);            return this.registerCriteriaChainElement((new Criteria("$nor")).is(bsonList));        }        //并且        public Criteria andOperator(Criteria... criteria) {            BasicDBList bsonList = this.createCriteriaList(criteria);            return this.registerCriteriaChainElement((new Criteria("$and")).is(bsonList));        }        private Criteria registerCriteriaChainElement(Criteria criteria) {            if (this.lastOperatorWasNot()) {                throw new IllegalArgumentException("operator $not is not allowed around criteria chain element: " + criteria.getCriteriaObject());            } else {                this.criteriaChain.add(criteria);                return this;            }        }        @Nullable        public String geTKEy() {            return this.key;        }        public Document getCriteriaObject() {            if (this.criteriaChain.size() == 1) {                return ((Criteria)this.criteriaChain.get(0)).getSingleCriteriaObject();            } else if (CollectionUtils.isEmpty(this.criteriaChain) && !CollectionUtils.isEmpty(this.criteria)) {                return this.getSingleCriteriaObject();            } else {                Document criteriaObject = new Document();                Iterator var2 = this.criteriaChain.iterator();                while(var2.hasNext()) {                    Criteria c = (Criteria)var2.next();                    Document document = c.getSingleCriteriaObject();                    Iterator var5 = document.keySet().iterator();                    while(var5.hasNext()) {                        String k = (String)var5.next();                        this.setValue(criteriaObject, k, document.get(k));                    }                }                return criteriaObject;            }        }        protected Document getSingleCriteriaObject() {            Document document = new Document();            boolean not = false;            Iterator var3 = this.criteria.entrySet().iterator();            while(true) {                while(var3.hasNext()) {                    Entry<String, Object> entry = (Entry)var3.next();                    String key = (String)entry.getKey();                    Object value = entry.getValue();                    if (requiresGeoJsonFORMat(value)) {                        value = new Document("$geometry", value);                    }                    if (not) {                        Document notDocument = new Document();                        notDocument.put(key, value);                        document.put("$not", notDocument);                        not = false;                    } else if ("$not".equals(key) && value == null) {                        not = true;                    } else {                        document.put(key, value);                    }                }                if (!StringUtils.hasText(this.key)) {                    if (not) {                        return new Document("$not", document);                    }                    return document;                }                Document queryCriteria = new Document();                if (!NOT_SET.equals(this.isValue)) {                    queryCriteria.put(this.key, this.isValue);                    queryCriteria.putAll(document);                } else {                    queryCriteria.put(this.key, document);                }                return queryCriteria;            }        }        private BasicDBList createCriteriaList(Criteria[] criteria) {            BasicDBList bsonList = new BasicDBList();            Criteria[] var3 = criteria;            int var4 = criteria.length;            for(int var5 = 0; var5 < var4; ++var5) {                Criteria c = var3[var5];                bsonList.add(c.getCriteriaObject());            }            return bsonList;        }        private void setValue(Document document, String key, Object value) {            Object existing = document.get(key);            if (existing == null) {                document.put(key, value);            } else {                throw new InvalidMongoDbApiUsageException("Due to limitations of the com.mongodb.BasicDocument, you can't add a second '" + key + "' expression specified as '" + key + " : " + value + "'. Criteria already contains '" + key + " : " + existing + "'.");            }        }        private boolean createNearCriteriaForCommand(String command, String operation, double maxDistance) {            if (!this.criteria.containsKey(command)) {                return false;            } else {                Object existingNearOperationValue = this.criteria.get(command);                if (existingNearOperationValue instanceof Document) {                    ((Document)existingNearOperationValue).put(operation, maxDistance);                    return true;                } else if (existingNearOperationValue instanceof GeoJson) {                    Document dbo = (new Document("$geometry", existingNearOperationValue)).append(operation, maxDistance);                    this.criteria.put(command, dbo);                    return true;                } else {                    return false;                }            }        }        public boolean equals(Object obj) {            if (this == obj) {                return true;            } else if (obj != null && this.getClass().equals(obj.getClass())) {                Criteria that = (Criteria)obj;                if (this.criteriaChain.size() != that.criteriaChain.size()) {                    return false;                } else {                    for(int i = 0; i < this.criteriaChain.size(); ++i) {                        Criteria left = (Criteria)this.criteriaChain.get(i);                        Criteria right = (Criteria)that.criteriaChain.get(i);                        if (!this.simpleCriteriaEquals(left, right)) {return false;                        }                    }                    return true;                }            } else {                return false;            }        }        private boolean simpleCriteriaEquals(Criteria left, Criteria right) {            boolean keyEqual = left.key == null ? right.key == null : left.key.equals(right.key);            boolean criteriaEqual = left.criteria.equals(right.criteria);            boolean valueEqual = this.isEqual(left.isValue, right.isValue);            return keyEqual && criteriaEqual && valueEqual;        }        //判断是否相等        private boolean isEqual(Object left, Object right) {            if (left == null) {                return right == null;            } else if (Pattern.class.isInstance(left)) {                if (!Pattern.class.isInstance(right)) {                    return false;                } else {                    Pattern leftPattern = (Pattern)left;                    Pattern rightPattern = (Pattern)right;                    return leftPattern.pattern().equals(rightPattern.pattern()) && leftPattern.flags() == rightPattern.flags();                }            } else {                return ObjectUtils.nullSafeEquals(left, right);            }        }        public int hashCode() {            int result = 17;            int result = result + ObjectUtils.nullSafeHashCode(this.key);            result += this.criteria.hashCode();            result += ObjectUtils.nullSafeHashCode(this.isValue);            return result;        }        private static boolean requiresGeoJsonFormat(Object value) {            return value instanceof GeoJson || value instanceof GeoCommand && ((GeoCommand)value).getShape() instanceof GeoJson;        }        private static class BitwiseCriteriaOperatorsImpl implements Criteria.BitwiseCriteriaOperators {            private final Criteria target;            BitwiseCriteriaOperatorsImpl(Criteria target) {                this.target = target;            }            public Criteria allClear(int numericBitmask) {                return this.numericBitmask("$bitsAllClear", numericBitmask);            }            public Criteria allClear(String bitmask) {                return this.stringBitmask("$bitsAllClear", bitmask);            }            public Criteria allClear(List<Integer> positions) {                return this.positions("$bitsAllClear", positions);            }            public Criteria allSet(int numericBitmask) {                return this.numericBitmask("$bitsAllSet", numericBitmask);            }            public Criteria allSet(String bitmask) {                return this.stringBitmask("$bitsAllSet", bitmask);            }            public Criteria allSet(List<Integer> positions) {                return this.positions("$bitsAllSet", positions);            }            public Criteria anyClear(int numericBitmask) {                return this.numericBitmask("$bitsAnyClear", numericBitmask);            }            public Criteria anyClear(String bitmask) {                return this.stringBitmask("$bitsAnyClear", bitmask);            }            public Criteria anyClear(List<Integer> positions) {                return this.positions("$bitsAnyClear", positions);            }            public Criteria anySet(int numericBitmask) {                return this.numericBitmask("$bitsAnySet", numericBitmask);            }            public Criteria anySet(String bitmask) {                return this.stringBitmask("$bitsAnySet", bitmask);            }            public Criteria anySet(List<Integer> positions) {                return this.positions("$bitsAnySet", positions);            }            private Criteria positions(String operator, List<Integer> positions) {                Assert.notNull(positions, "Positions must not be null!");                Assert.noNullElements(positions.toArray(), "Positions must not contain null values.");                this.target.criteria.put(operator, positions);                return this.target;            }            private Criteria stringBitmask(String operator, String bitmask) {                Assert.hasText(bitmask, "Bitmask must not be null!");                this.target.criteria.put(operator, new Binary(Base64Utils.decodeFromString(bitmask)));                return this.target;            }            private Criteria numericBitmask(String operator, int bitmask) {                this.target.criteria.put(operator, bitmask);                return this.target;            }        }        public interface BitwiseCriteriaOperators {            Criteria allClear(int var1);            Criteria allClear(String var1);            Criteria allClear(List<Integer> var1);            Criteria allSet(int var1);            Criteria allSet(String var1);            Criteria allSet(List<Integer> var1);            Criteria anyClear(int var1);            Criteria anyClear(String var1);            Criteria anyClear(List<Integer> var1);            Criteria anySet(int var1);            Criteria anySet(String var1);            Criteria anySet(List<Integer> var1);        }    }}

3、MongoTemplate结合BasicQueryBasicQuery是Query的子类

4、MongoTemplate结合Aggregation使用Aggregation聚合查询

来源地址:https://blog.csdn.net/paulwang040/article/details/128922162

--结束END--

本文标题: java操作mongodb源码

本文链接: https://lsjlt.com/news/406514.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java操作mongodb源码
    文章目录 案例一:MongoClient最简单操作1、优缺点2、添加依赖3、源码 案例二:继承MongoRepository1、优缺点2、接口类继承MongoRepository3、ser...
    99+
    2023-09-13
    mongodb java spring boot
  • Java原子操作类源码分析
    这篇文章主要介绍“Java原子操作类源码分析”,在日常操作中,相信很多人在Java原子操作类源码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java原子操作类源码分析”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-30
  • Java操作MongoDB数据库的示例代码
    目录环境准备 1.数据库操作 1.1获取所有数据库1.2获取指定库的所有集合名1.3.删除数据库2.文档操作 2.1插入文档 2.2查询文档 2.3分页查询 2.4修改文档2.5 删...
    99+
    2024-04-02
  • express使用Mongoose连接MongoDB操作示例【附源码下载】
    本文实例讲述了express使用Mongoose连接MongoDB操作。分享给大家供大家参考,具体如下: 为何要学Mongoose? Mongoose是MongoDB的一个对象模型工具,封装了MongoDB...
    99+
    2024-04-02
  • MongoDB操作
    #=========2、mongo===================================#备份数据库mongodump -h 127.0.0.1 -d eb_mongo -o /root/x...
    99+
    2024-04-02
  • PHP7操作MongoDB
    目录插入数据查询数据更新数据删除数据 PHP7里面使用如下库,操作比较复杂 PHP7连接MongoDB语法如下: //参数规则: mongodb://账号:密码@IP:端口/数据库 $manager = new MongoDBD...
    99+
    2017-02-17
    PHP7操作MongoDB
  • C# 操作MongoDB
    1 安装MongoDB.Driver2 建立数据库连接 #mongodb://127.0.0.1:27017 MongoClient client = new MongoClient(“连接字符串”); ...
    99+
    2024-04-02
  • Python操作Mongodb
    一 导入 pymongo from pymongo import MongoClient 二 连接服务器 端口号 27017 连接MongoDB连接MongoDB我们需要使用PyMongo库里面的MongoClient,一般来说传入Mong...
    99+
    2023-01-31
    操作 Python Mongodb
  • 源码安装mongoDB
    安装步骤:1.准备1.1 显示系统版本[root@centos ~]# cat /etc/redhat-releaseCentOS Linux release 6.4.1406 (Core)1.2 安装基本...
    99+
    2024-04-02
  • MongoDB Java API操作很全的整理
    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写,一般生产上建议以共享分片的形式来部署。 但是MongoDB官方也提供了其它语言的客户端操作API。如下图所示: 提供了C、C++、C#、.net、GO、java、Nod...
    99+
    2015-08-19
    MongoDB Java API操作很全的整理
  • Java中怎么操作MongoDB数据库
    今天就跟大家聊聊有关Java中怎么操作MongoDB数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java与mongodb的连接1. 连单台m...
    99+
    2024-04-02
  • [MongoDB]mongodb的命令行操作
    ./mongo1.查看所有数据库show dbs2.切换数据库use 数据库名3.查询所有集合show collections4.查询所有文档db.文档名.find()db.文档名.find().pretty() //格式化显示5...
    99+
    2020-10-06
    [MongoDB]mongodb的命令行操作
  • MongoDB基础操作
    MongoDB增删改查操作 MongoDB数据库服务启动和关闭 net start mongodb net stop mongodb 数据库连接 先使用npm install mongoose安装mongoose依赖,之后使用mongoo...
    99+
    2017-01-10
    MongoDB基础操作 数据库入门 数据库基础教程 数据库 mysql
  • mongodb简单操作
    1、执行mongod.exe 服务器启动  后面可跟参数说明启动的数据库和日志。eg:mongod.exe --bind_ip 127.0.0.1 --logpath...
    99+
    2024-04-02
  • [MongoDB] 基本操作
    ...
    99+
    2024-04-02
  • MongoDB 常用操作
    MongoDB常用操作 ...
    99+
    2024-04-02
  • mongoDB基本操作
    MongdoDB实例—》数据库—》集合—》文档—》字段(key/value pair)bin 执行./mongod     启动  &后台启动./m...
    99+
    2024-04-02
  • mongodb CRUD操作 -Select
    https://docs.mongodb.com/manual/reference/method/db.collection.find/ 查询文档db.collection.find(query, proj...
    99+
    2024-04-02
  • mongodb的写操作
    使用插入数据命令: >insert 需要注意的是,如果插入一文件(现在理解,nosql 类型的db数据不能说是记录了,它是已文件作为单位,而传统型的关系型数据库,我们说是插入一条记录),如果没有带人_...
    99+
    2024-04-02
  • MongoDB常用操作
    关系型数据库名词与MongoDB对比:关系数据库 MongoDB Database  DatabaseTable CollectionRow Do...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作