mongdb 嵌套操作

来源:互联网 发布:下载排卵期测算软件 编辑:程序博客网 时间:2024/05/19 07:08
package com.hexun.mobile.commerce.controller;import java.util.Date;import java.util.List;import javax.annotation.Resource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.data.domain.Sort;import org.springframework.data.domain.Sort.Direction;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.aggregation.Aggregation;import org.springframework.data.mongodb.core.aggregation.AggregationResults;import org.springframework.data.mongodb.core.query.Criteria;import org.springframework.data.mongodb.core.query.Query;import org.springframework.data.mongodb.core.query.Update;import org.springframework.data.mongodb.core.query.Update.Position;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import com.google.gson.Gson;import com.google.gson.JsonParser;import com.hexun.mobile.commerce.model.NewsTest;import com.hexun.mobile.commerce.model.NewsTest2;import com.hexun.mobile.commerce.model.Price;import com.hexun.mobile.common.response.BaseResponse;import com.mongodb.BasicDBObject;@Controller@RequestMapping("/test")public class TestController {private static final Logger logger = LoggerFactory.getLogger(TestController.class);private static final JsonParser parser = new JsonParser();Gson gson = new Gson();final String  ID = "5a1e50584fbaeb80d74db028";@Resource(name = "mongoTemplate")private MongoTemplate mongoTemplate;@RequestMapping(value = "/test")@ResponseBodypublic  Object add(){Price price = new Price();price.setIno("wkc");price.setPrice(11111);price.setQuantity(9999999);price.setDate1(new Date());Criteria criteria = new Criteria();  criteria.and("_id").is(ID); Query query = new Query(criteria);          Update update = new Update().push("items", price);        //Update update = new Update().pull("items.ino", price);//报错        mongoTemplate.updateFirst(query, update, NewsTest.class);        BaseResponse<String> rsp = new BaseResponse<String>();return rsp;}@RequestMapping(value = "/pop")@ResponseBodypublic  Object pop(){Criteria criteria = new Criteria();  criteria.and("_id").is(ID);Query query = new Query(criteria);         Update update = new Update().pop("items", Position.FIRST);        mongoTemplate.updateFirst(query, update, NewsTest.class);                BaseResponse<String> rsp = new BaseResponse<String>();return rsp;}/** * 指定删除 OK * @return */@RequestMapping(value = "/del3")@ResponseBodypublic  Object del3(){Query query = Query.query(Criteria.where("_id").is(ID));BasicDBObject doc = new BasicDBObject();          doc.put("ino","wkc");          doc.put("price", 11111);         Update update = new Update();update.pull("items",doc);        mongoTemplate.updateFirst(query,update, NewsTest.class);                BaseResponse<String> rsp = new BaseResponse<String>();return rsp;}/** * 修改OK *  * @return */@RequestMapping(value = "/update")@ResponseBodypublic  Object update(){Query query = Query.query(Criteria.where("_id").is(ID).and("items.ino").is("wkc").and("items.price").is(11111));Update update = new Update();update.set("items.$.quantity", "3332");update.set("items.$.price", "8882");        mongoTemplate.updateFirst(query,update, NewsTest.class);        BaseResponse<String> rsp = new BaseResponse<String>();return rsp;}/** * 查询OK *  * @return */@RequestMapping(value = "/find")@ResponseBodypublic  Object find(){Criteria criteria = new Criteria();  criteria.and("_id").is(ID);//criteria.where("_id").is(ID);criteria.and("items.ino").is("wkc");Query query = new Query(criteria);  query.with(new Sort(Direction.DESC,"items.date"));        List<NewsTest> list = mongoTemplate.find(query,NewsTest.class);        //boolean b  =mongoTemplate.exists(query, NewsTest.class);BaseResponse<List<NewsTest>> rsp = new BaseResponse<List<NewsTest>>();rsp.setDatas(list);return rsp;}@RequestMapping(value = "/count")@ResponseBodypublic  Object count(){Criteria criteria = new Criteria();  criteria.and("cname").is("bhhs");Aggregation aggregation = Aggregation.newAggregation(Aggregation.match(criteria),Aggregation.project("items"),Aggregation.unwind("items"),Aggregation.match(Criteria.where("items.ino").is("wkc"))); //AggregationResults<BasicDBObject> aggregationResults = mongoTemplate.aggregate(aggregation, "cytest",BasicDBObject.class);AggregationResults<NewsTest2> aggregationResults = mongoTemplate.aggregate(aggregation, "cytest",NewsTest2.class);         //boolean b  =mongoTemplate.exists(query, NewsTest.class);BaseResponse rsp = new BaseResponse();rsp.setDatas(aggregationResults.getMappedResults());return rsp; }/** * 查询OK *  * @return */@RequestMapping(value = "/sort")@ResponseBodypublic  Object sort(){Criteria criteria = new Criteria();  criteria.and("cname").is("bhhs");//criteria.where("_id").is(ID);//criteria.and("items.ino").is("wkc");//Query query = new Query(criteria);  //query.with(new Sort(Direction.DESC,"items.date"));Aggregation aggregation = Aggregation.newAggregation(//Aggregation.match(Criteria.where("_id").is(ID)),Aggregation.match(criteria),Aggregation.project("items"),Aggregation.unwind("items"),Aggregation.match(Criteria.where("items.ino").is("wkc")),Aggregation.sort(new Sort(Direction.ASC,"items.date1")));//AggregationResults<BasicDBObject> aggregationResults = mongoTemplate.aggregate(aggregation, "cytest",BasicDBObject.class);AggregationResults<NewsTest2> aggregationResults = mongoTemplate.aggregate(aggregation, "cytest",NewsTest2.class);         //boolean b  =mongoTemplate.exists(query, NewsTest.class);BaseResponse rsp = new BaseResponse();rsp.setDatas(aggregationResults.getMappedResults());return rsp; }@RequestMapping(value = "/find2")@ResponseBodypublic  Object find2(){Query query = Query.query(Criteria.where("items.ino").is("wkc")).with(new Sort(Direction.DESC,"items.date"));          List<NewsTest> list = mongoTemplate.find(query,NewsTest.class);        //boolean b  =mongoTemplate.exists(query, NewsTest.class);BaseResponse<List<NewsTest>> rsp = new BaseResponse<List<NewsTest>>();rsp.setDatas(list);return rsp;}}

原创粉丝点击