3.0MongoDB对一个collection的常用操作

来源:互联网 发布:vm12 mac os 编辑:程序博客网 时间:2024/04/27 19:36
获取数据操作: 
MongoDatabase database = mongoClient.getDatabase("testdb");
获取一个collection:
MongoCollection<Document> collection = database.getCollection("test");

1、插入一条数据:
命令:
db.test.insert(
"name" : "MongoDB""type" : "database""count" : 1"info" : { x : 203, y : 102 } }

);
java:
 Document doc = new Document("name", "MongoDB")
                       .append("type", "database")
                       .append("count", 1)
                       .append("info", new Document("x", 203).append("y", 102));

collection.insertOne(doc);

2、批量插入数据:

List<Document> documents = new ArrayList<Document>();
 Document doc = new Document("name", "MongoDB")
                       .append("type", "database")
                       .append("count", 1)
                       .append("info", new Document("x", 203).append("y", 102));

        for (int i = 0; i < 100; i++) {
            documents.add(doc );
        }
 collection.insertMany(documents);

3、查询所有记录
 MongoCursor<Document> cursor = collection.find().iterator();
        try {
            while (cursor.hasNext()) {
                System.out.println(cursor.next().toJson());
            }
        } finally {
            cursor.close();
        }

4、查询符合相等条件的记录
cursor =collection.find(eq("i", 71))

5、查询大于、小于、等于、大于等于、小于等于某一条件的记录,以及查询某一范围的记录
cursor = collection.find(gt("i", 50)).iterator();
cursor = collection.find(new Document("i",new Document("$gt",50))).iterator();

cursor = collection.find(lt("i", 50)).iterator();
cursor = collection.find(new Document("i",new Document("$lt",50))).iterator();

cursor = collection.find(gte("i", 50)).iterator();
cursor = collection.find(new Document("i",new Document("$gte",50))).iterator();

cursor = collection.find(lte("i", 50)).iterator();
cursor = collection.find(new Document("i",new Document("$lte",50))).iterator();

cursor = collection.find(and(gt("i", 50), lte("i", 100))).iterator();
cursor = collection.find(new Document("i",new Document("$lte",50).append("$gt",40))).iterator();

6、将查询结果放在set中
 Block<Document> printBlock = new Block<Document>() {
            @Override
            public void apply(final Document document) {
                System.out.println(document.toJson());
            }
        };
        collection.find(gt("i", 50)).forEach(printBlock);

7、对查询结果排序
        myDoc = collection.find(exists("i")).sort(descending("i")).first();
或者myDoc = collection.find(exists("i")).sort(new Document("i",-1)).first();
1或者-1表示升序或者降序

8、定制返回的字段
 myDoc = collection.find().projection(excludeId()).first();//不返回id
 myDoc = collection.find().projection(new Document("name",1).append("type",0)).first();//不返回type,返回name

9、更新文档,MongoDB有很多修改器
更新一个文档:collection.updateOne(eq("i", 10), new Document("$set", new Document("i", 110)));//将i=10的记录中i设置为110

更新多个文档:
        UpdateResult updateResult = collection.updateMany(lt("i", 100),
         new Document("$inc", new Document("i", 100)));//将i<100的记录i都加上100
        System.out.println(updateResult.getModifiedCount());

10、删除文档
 collection.deleteOne(eq("i", 110));
 DeleteResult deleteResult = collection.deleteMany(gte("i", 100));

11、批量操作
List<WriteModel<Document>> writes = new ArrayList<WriteModel<Document>>();
        writes.add(new InsertOneModel<Document>(new Document("_id", 4)));
        writes.add(new InsertOneModel<Document>(new Document("_id", 5)));
        writes.add(new InsertOneModel<Document>(new Document("_id", 6)));
        writes.add(new UpdateOneModel<Document>(new Document("_id", 1), new Document("$set", new Document("x", 2))));
        writes.add(new DeleteOneModel<Document>(new Document("_id", 2)));
        writes.add(new ReplaceOneModel<Document>(new Document("_id", 3), new Document("_id", 3).append("x", 4)));

        collection.bulkWrite(writes);//顺序执行
         collection.bulkWrite(writes,new BulkWriteOptions().ordered(false));//不保证按照顺序执行
0 0
原创粉丝点击