python mongoDB 模糊查询(多条件)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python mongoDB 模糊查询(多条件)相关的知识,希望对你有一定的参考价值。

参考技术A https://docs.mongodb.com/manual/reference/operator/query/or/#op._S_or

Java操作mongodb的基本操作

目录

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 模糊查询(多条件)的主要内容,如果未能解决你的问题,请参考以下文章

mongodb模糊查询语句用法

nodejs + mongodb实现模糊查询与全文搜索

thinkphp5 怎么将变量作为模糊查询条件

Mysql查询详解(条件查询、子查询、模糊查询、连接查询。。。)

如何用php对mongodb进行模糊查询

如何用php对mongodb进行模糊查询