java环境下:MongoDB的crud操作之Update (三)

下面介绍:$push $pushAll $addToSet关键字执行update操作

一、$push关键字的用法

 public static void testUpdate5(){
	String ip = "192.168.2.3";
	int port = 27017;
	String[] citys = {"beijing","tianjing","wuhan"};
	MongoClient client = MongoDBUtil.getClient(ip, port);
	DB db = client.getDB("zhanglong_test");
	DBCollection collection = db.getCollection("students");
	BasicDBObject query = new BasicDBObject("name", "jacky");
	
	//因为$push关键字只能对数组进行操作,所以先添加一个key为city的数组
	collection.update(query, new BasicDBObject().append("$set",new BasicDBObject("city",citys)));
	
	/*
	 * $push关键字的说明:它只能操作一个数组
	 * 1.如果指定的键是数组增追加新的数值
	 * 2.如果指定的键不是数组则中断当前操作Cannot apply $push/$pushAll modifier to non-array
	 * 3.如果不存在指定的键则创建数组类型的键值对
	 */
	//在key中添加一个城市:dalian
	collection.update(query, new BasicDBObject().append("$push",new BasicDBObject("city","dalian")));
    }


可以看到在city数组中,多了一个dalian值。

二、$pushAll关键字的用法:

public static void testUpdate6(){
   	String ip = "192.168.2.3";
   	int port = 27017;
   	String[] city2 = {"xiaogan","hanchuan"};
   	
   	MongoClient client = MongoDBUtil.getClient(ip, port);
   	DB db = client.getDB("zhanglong_test");
   	DBCollection collection = db.getCollection("students");
   	BasicDBObject query = new BasicDBObject("name", "jacky");
   	
   	/*
   	 * $pushAll关键字的说明:它也只能操作一个数组
   	 * 它的用法和$push差不多,只不过是向数组中添加一组数据而已
   	 */
   	//在key中添加一个城市:dalian
   	collection.update(query, new BasicDBObject().append("$pushAll",new BasicDBObject("city",city2)));
       }


可以看到name为jacky的文档 city数组中多了两个值,分别为xiaogan,hanchuan

三、$addToSet关键字的用法:

目标数组存在此项则不操作,不存在此项则加进去

public static void testUpdate7(){
   	String ip = "192.168.2.3";
   	int port = 27017;
   	String[] city2 = {"xiaogan","hanchuan"};
   	
   	MongoClient client = MongoDBUtil.getClient(ip, port);
   	DB db = client.getDB("zhanglong_test");
   	DBCollection collection = db.getCollection("students");
   	BasicDBObject query = new BasicDBObject("name", "jacky");
   	
   	//因为原来city中存在wuhan,所以添加不进去
   	collection.update(query, new BasicDBObject().append("$addToSet",new BasicDBObject("city","wuhan")));
   	//原来city中不存在huangshi,所以添加进去了
   	collection.update(query, new BasicDBObject().append("$addToSet",new BasicDBObject("city","huangshi")));
       
    }

查看数据库:


可以看到多了一个huangshi的值,但是wuhan没有添加进去!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值