MongDB java 操作

来源:互联网 发布:中国历代疆域图软件 编辑:程序博客网 时间:2024/05/06 03:40

主要注意操作mongo-java-driver包的版本,个人以为应该也要注意安装安mongoDB数据的版本,最好能相对应比较好!

用记录ID号更新信息不能是

UpdateResult updateResult = collection.replaceOne(new BasicDBObject("_id", "58438f325967e41d208f5901"),          new Document("content","content123456789").append("comment_count", 99).append("title", "source123456789"));

而用是,千万要记住_id是一个ObjectId值而不是一个字符串,根php里操作有很大差别

UpdateResult updateResult = collection.replaceOne(new BasicDBObject("_id", new ObjectId("58438f325967e41d208f5901")),          new Document("content","content123456789").append("comment_count", 99).append("title", "source123456789"));

以下为相关操作的记录信息:
插入操作

        MongoClient mongoClient = new MongoClient( "localhost" , 27017);        MongoDatabase db = mongoClient.getDatabase("shop");        //进入某个文档集          MongoCollection<Document> collection = db.getCollection("animal");          //创建新文档        create cat        Document document = new Document("name", "tom").append("type", "cat").append("count", 10).append("info", new Document("high", 50).append("weight", 20));        collection.insertOne(document);        //创建一个包含多个文档的列表        List<Document> documents = new ArrayList<Document>();        for(int i=0; i<5; i++){            documents.add(new Document("name", "tom"+i).append("type", "cat").append("count", 10).append("info", new Document("high", 50+i).append("weight", 20+i)));        }        collection.insertMany(documents);

读取操作

        //获取集合中的文档数量        System.out.println("count===="+collection.count());        //查询集合中的第一个文档        Document myDocument = collection.find().first();        System.out.println("find first===="+myDocument);        //获取集合中的全部文档        MongoCursor<Document> cursor = collection.find().iterator();        while(cursor.hasNext()){            System.out.println(cursor.next().toJson());        }        cursor.close();        //获取全部数据的另一种方法        FindIterable<Document > documents =  collection.find();        for(Document document : documents){            System.out.println("document====="+document);        }        //根据指定条件查询记录        Document myDocument  = collection.find(new BasicDBObject("name", "tom")).first();        System.out.println("myDocument==="+myDocument);        //根据条件获取某分文档 eq:==        Document myDoc = collection.find(new BasicDBObject("name", new BasicDBObject("$eq", "tom")) ).first();        System.out.println("myDoc==="+myDoc);        //查询id=5843e04f5f08a52288a06a99        Document myDoc = collection.find(new BasicDBObject("_id", new ObjectId("5843e04f5f08a52288a06a99")) ).first();        System.out.println("myDoc==="+myDoc);        //查询name=tom   eq等于某个值        Document myDoc2 = collection.find(new BasicDBObject("name", new BasicDBObject("$eq", "tom"))).first();        System.out.println("eq.myDoc2==="+myDoc2);        //查询count >=2   gte大于等于        FindIterable<Document>  documents = collection.find(new BasicDBObject("count", new BasicDBObject("$gte", 2)));        for(Document document:documents){            System.out.println("document======"+document);        }        //查询info里的某个值测试失败        FindIterable<Document>  documents2 = collection.find(new BasicDBObject("info", new BasicDBObject("high", new BasicDBObject("$gte", 10))));        for(Document document:documents2){            System.out.println("document======"+document);        }        //小于等于50        FindIterable<Document>  documents2 = collection.find(new BasicDBObject("count", new BasicDBObject("$lte", 10)));        for(Document document:documents2){            System.out.println("document======"+document);        }        //查询不等于count!=9        FindIterable<Document>  documents2 = collection.find(new BasicDBObject("count", new BasicDBObject("$ne", 9)));        for(Document document:documents2){            System.out.println("document======"+document);        }        //查询name in tom/tom1/tom3        FindIterable<Document>  documents2 = collection.find(new BasicDBObject("name",                 new BasicDBObject(QueryOperators.IN, new String[]{"tom", "tom1", "tom3"})));        for(Document document:documents2){            System.out.println("document======"+document);        }        //查询name not in tom/tom1/tom3        FindIterable<Document>  documents2 = collection.find(new BasicDBObject("name",                                 new BasicDBObject(QueryOperators.NIN, new String[]{"tom", "tom1", "tom3"})));        for(Document document:documents2){            System.out.println("document======"+document);        }        //查询name2 字段不存在的记录        FindIterable<Document>  documents2 = collection.find(new BasicDBObject("name2",         new BasicDBObject(QueryOperators.EXISTS, true)));        for(Document document:documents2){            System.out.println("document======"+document);        }        // 对输出文档进行排序,-1为递减,1为递增          // 官方文档的例子有误:http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/#sorting-documents          // Document myDoc = collection.find(exists("i")).sort(new BasicDBObject("i", -1)).first();         //-1为递减,1为递增          //-1等于倒序 DESC  1=顺序ASC        FindIterable<Document>  documents2 = collection.find().sort(new BasicDBObject("name", -1));        for(Document document:documents2){            System.out.println("document======"+document);        }                //类拟分页操作        //获取总数        long count = collection.count(new BasicDBObject("count",10));        FindIterable<Document>  documents2 = collection.find(new BasicDBObject("count",10)).skip(1).limit(3).sort(new BasicDBObject("name",-1));        System.out.println("count===="+count);        for(Document document:documents2){            System.out.println("document======"+document);        }         // 选择性输出结果中的元素,0为不显示,1为显示          // 官方文档中的例子又不能用:http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/#projecting-fields           BasicDBObject exclude = new BasicDBObject();           exclude.append("_id", 0);           // exclude.append("count", 0);           exclude.append("name", 1);           exclude.append("info", 1);           Document myDoc = collection.find().projection(exclude).first();           System.out.println(myDoc.toJson());  

修改操作

        // 修改时的参数:          // $inc 对指定的元素加          // $mul 乘          // $rename 修改元素名称          // $setOnInsert 如果以前没有这个元素则增加这个元素,否则不作任何更改          // $set 修改制定元素的值          // $unset 移除特定的元素          // $min 如果原始数据更大则不修改,否则修改为指定的值          // $max 与$min相反          // $currentDate 修改为目前的时间          //修改第一个符合条件的数据          // $set 为修改          UpdateResult updateResult =  collection.updateOne(new BasicDBObject("name", "tom"), new Document("$set", new Document("count", 100)));           // 获取全部文档,可以看到以前10的地方变成了110           for (Document cur : collection.find()) {               System.out.println(cur.toJson());           }           //修改多条记录         //所有count值小于100的记录添加100         UpdateResult updateResult =  collection.updateMany(new BasicDBObject("count", new BasicDBObject("$lt",100)),                  new Document("$inc", new Document("count", 100)));                  for (Document cur : collection.find()) {               System.out.println(cur.toJson());           }   

删除操作

        //删除第一条符合条件的数据        DeleteResult deleteResult = collection.deleteOne(new BasicDBObject("name", "tom2"));        System.out.println("deleteResult"+deleteResult);        //删除符合条件的多条记录        DeleteResult deleteResult2 = collection.deleteMany(new BasicDBObject("count", 110));        System.out.println("deleteResult2"+deleteResult2);
0 0
原创粉丝点击