python mongoDB 模糊查询(多条件)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python mongoDB 模糊查询(多条件)相关的知识,希望对你有一定的参考价值。
参考技术A https://docs.mongodb.com/manual/reference/operator/query/or/#op._S_orJava操作mongodb的基本操作
目录
MongoDB中的文档本质上是一种类似JSON的BSON格式的数据。
BSON是一种类似JSON的二进制格式数据,它可以理解为在JSON基础上添加了一些新的数据类型。
MongoDB的基本操作
首先要导入操作MongoDB所需要的jar包:
Java连接MongoDB数据库
MongoClient mc=new MongoClient("localhost",27017);
MongoDatabase database = mc.getDatabase("myschool");
MongoCollection<Document> collection = database.getCollection("student");
第一句是获取链接对象。
第二句是获取myschool的数据库,如果没有会在添加的时候自动的创建。
第三句是获取名为student的集合,如果没有也会在添加的时候自动的创建
新增
方式一:
package com.ape.select;
import java.util.Date;
import org.bson.Document;
import com.ape.bean.Student;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class addDemoGson
public static void main(String[] args)
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
//连接对象
MongoClient mc = new MongoClient("localhost",27017);
//库对象
MongoDatabase db = mc.getDatabase("myschool");
//集合对象
MongoCollection<Document> collection = db.getCollection("student");
Student s =new Student();
s.setBirthday(new Date());
s.setClassid(100);
s.setSid(2);
s.setSname("小王");
s.setSsex("男");
//转换
String json = gson.toJson(s);
System.out.println(json);
collection.insertOne(Document.parse(json));
mc.close();
该种方式进行了手动的解析。
方式二:
package com.ape.add;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class adddemo
public static void main(String[] args)
MongoClient mc=new MongoClient("localhost",27017);
MongoDatabase database = mc.getDatabase("myschool");
MongoCollection<Document> collection = database.getCollection("student");
// Document document = new Document();
// document.put("name", "张三");
// document.put("age", 18);
// document.put("birthday", new Date());
// document.put("sex", "男");
// collection.insertOne(document);
//mc.close();
//添加多条
Document document1 = new Document();
document1.put("name", "张三");
document1.put("age", 18);
document1.put("birthday", new Date());
document1.put("sex", "男");
Document document2 = new Document();
document2.put("name", "张三");
document2.put("age", 18);
document2.put("birthday", new Date());
document2.put("sex", "男");
Document document3 = new Document();
document3.put("name", "张三");
document3.put("age", 18);
document3.put("birthday", new Date());
document3.put("sex", "男");
Document document4 = new Document();
document4.put("name", "张三");
document4.put("age", 18);
document4.put("birthday", new Date());
document4.put("sex", "男");
List<Document>list=new ArrayList<>();
list.add(document1);
list.add(document2);
list.add(document3);
list.add(document4);
collection.insertMany(list);
mc.close();
从所写的代码中看,新增的方法有两种:第一种是添加单条数据的:insertOne(),第二种是可以一次性添加多条数据的:insertMany()。
第一种:
第二种: 5条=1+4
删除:
package com.ape.delete;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.DeleteResult;
public class deleteDemo
public static void main(String[] args)
MongoClient mc=new MongoClient("localhost",27017);
MongoDatabase database = mc.getDatabase("myschool");
MongoCollection<Document> collection = database.getCollection("student");
DeleteResult deleteOne = collection.deleteOne(new Document("name","张三"));
System.out.println(deleteOne);
//DeleteResult deleteMany = collection.deleteMany(new Document("name","张三"));
//System.out.println(deleteMany);
mc.close();
从代码上看只是进行了简单的删除,deleteOne()只进行删除符合条件的第一条,deleteMany()是删除了所有符合条件的语句。
删除一条:
删除查到的所有:5-1=4
带条件的删除
package com.ape.delete;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
public class deleteDemo
public static void main(String[] args)
MongoClient mc=new MongoClient("localhost",27017);
MongoDatabase database = mc.getDatabase("myschool");
MongoCollection<Document> collection = database.getCollection("student");
Bson gt = Filters.gt("age", 100);
// Bson exists = Filters.exists("age");//存在年龄的
// Bson exists = Filters.exists("age", false);//不存在年龄的
DeleteResult deleteOne = collection.deleteOne(gt);
System.out.println(deleteOne);
// DeleteResult deleteMany = collection.deleteMany(exists);
// System.out.println(deleteMany);
mc.close();
第一句是年龄大于100的删除
第二句是删除有年龄的人
我们添加了5条所以查到了5条,然后通过deleteMany将他全部的删除。
第三局是删除没有年龄的(先执行了第三个,后执行第二个)
我们在添加的时候给每一条数据都有年龄,所以没有查到数据。
建议使用的时候数据要多样化,能够满足条件。
修改
Filters 该过滤器类为所有的MongoDB的查询操作静态工厂方法。每个方法返回BSON类型,又可以传递给期 望一个查询过滤器的任何方法的一个实例。
修改条件
package com.ape.update;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.UpdateOptions;
import com.mongodb.client.result.UpdateResult;
public class updateDemo
public static void main(String[] args)
MongoClient mc=new MongoClient("localhost",27017);
MongoDatabase database = mc.getDatabase("myschool");
MongoCollection<Document> collection = database.getCollection("student");
//修改条件
// Bson eq = Filters.eq("name","张三");
// UpdateResult updateOne = collection.updateOne(eq, new Document("$set",new Document("age",20)));
// System.out.println(updateOne);
// UpdateResult updateMany = collection.updateMany(eq, new Document("$set",new Document("age",20)));
// System.out.println(updateMany);
//修改添加
// Bson eq = Filters.eq("name","haha");
// UpdateResult updateOne = collection.updateOne(eq,
// new Document("$set",new Document("age",16)),
// new UpdateOptions().upsert(true));
// System.out.println(updateOne);
//matchedCount=0, modifiedCount=0, 查到0个,修改0个
//upsertedId=BsonObjectIdvalue=631fe6a20a395b2479cd6205
//多条件
Bson lte = Filters.lte("age", 30);
Bson gte = Filters.gte("age", 10);
Bson and = Filters.and(gte,lte);
UpdateResult updateMany = collection.updateMany(and, new Document("$set",new Document("sex","保密")));
System.out.println(updateMany);
//有的改不了的是类型的问题不是int型,是String
//对年龄增加100
// UpdateResult updateMany = collection.updateMany(and, new Document("$inc",new Document("age",5)));
mc.close();
updateOne()是修改一条,updateMany()是修改多条。
修改的条件是name位张三的。
第一条updateOne:age由18变为20
第二条updateMany:
共有19条其中有16条的age!=20,讲着16条全变为20。
修改并添加
查到0个,修改为0个,但是有修改id。加上这句:
就会在没有的时候去新增一条。
多条件修改:
小于30且大于10的都进行修改,性别改为保密。
原数据
修改后
查询
普通查询
package com.ape.select;
import java.util.ArrayList;
import org.bson.Document;
import com.ape.bean.Student;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
public class demo
public static void main(String[] args)
MongoClient mc=new MongoClient("localhost",27017);
MongoDatabase database = mc.getDatabase("myschool");
MongoCollection<Document> collection = database.getCollection("student");
FindIterable<Document> find = collection.find();
for (Document document : find)
System.out.println(document);
mc.close();
条件查询
多条件查询
模糊查询:
查询除来的结果有两种的显示方式:
第一种是代码中所使用的增强 for循环。
第二种是使用迭代器的方式。
以上是关于python mongoDB 模糊查询(多条件)的主要内容,如果未能解决你的问题,请参考以下文章