欢迎来到天天文库
浏览记录
ID:57889609
大小:44.22 KB
页数:5页
时间:2020-09-02
《mongo中模糊查询使用和QueryOperators.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Mongo的高级查询一.Mongo中插入数组或者集合1.Mongo中很正常会看到这样的数据。userCollection是一个类似数组的数据类型。这是如何做到的呢?二.如果向mongo中插入数组。(1)实际上很简单,既然值是一个数组,那么我们就创建一个数组,然后往数组中添加值,当然这边的值都是一些对象引用。(2)对象引用概念:就如关系型数据库中主键和外键的关系,只不过mongo中的对象引用是通过对象DBRef来实现的。(3)Mongo中的主键都是”_id”,并且是由ObjectId对象产生的。例如:DBObjectobj=newBasicDBObject();o
2、bj.put("_id",newObjectId());(4)实例:User表中的的classId肯定是一个对象引用,引用来自class表中的classId主键。我们可以这样来引用:DBRefd=newDBRef(classId);注意:这时候的classId这一列就不是String类型的了,而是对象类型的了。1.Mongo中插入数组实现的代码如下:BasicDaobasicDao=newBasicDao();DBCollectioncoll=basicDao.getDBCollection("User2");DBObjectfield=newBasicDBOb
3、ject();Object[]array=newObject[5];for(inti=0;i4、lection("User");DBObjectfield=newBasicDBObject();Listlist=newArrayList();for(inti=0;i<5;i++){DBRefref=newDBRef(basicDao.getDB(),"User",newObjectId());list.add(ref);}field.put("userCollection",list);coll.save(field);2.查询数组或者集合中的每一个元素.(1)现在大家都知道mongo中插入数组是啥回事的了,但是现在又遇到一个问5、题,如何查询这些数组里面的每一个元素?(2)这个不由的让我想到了反射机制,因为我们根本不知道用户插入的时候插入的是数组还是集合,但是可以肯定这两个类型不一样。(3)代码如下:BasicDaobasicDao=newBasicDao();DBCollectioncoll=basicDao.getDBCollection("User2");DBObjectquery=newBasicDBObject();query.put("_id",newObjectId("4e12e3c3912b22d362bdc022"));DBObjectuser=coll.findOne6、(query);if(user!=null){ObjectuserCollection=user.get("userCollection");if(userCollectioninstanceofList){ListrefList=newArrayList();Listlist=(List)userCollection;for(Objectobj:list){if(objinstanceofDBRef){DBRefref=(DBRef)obj;refList.add(ref);}}System.out.println("userCol7、lectiontypeisList");System.out.println("refList'ssize:"+refList.size());}if(userCollectioninstanceofObject[]){ListrefList=newArrayList();Object[]array=(Object[])userCollection;for(Objectobj:array){if(objinstanceofDBRef){DBRefref=(DBRef)obj;refList.add(ref);}}System.out.8、println("use
4、lection("User");DBObjectfield=newBasicDBObject();Listlist=newArrayList();for(inti=0;i<5;i++){DBRefref=newDBRef(basicDao.getDB(),"User",newObjectId());list.add(ref);}field.put("userCollection",list);coll.save(field);2.查询数组或者集合中的每一个元素.(1)现在大家都知道mongo中插入数组是啥回事的了,但是现在又遇到一个问
5、题,如何查询这些数组里面的每一个元素?(2)这个不由的让我想到了反射机制,因为我们根本不知道用户插入的时候插入的是数组还是集合,但是可以肯定这两个类型不一样。(3)代码如下:BasicDaobasicDao=newBasicDao();DBCollectioncoll=basicDao.getDBCollection("User2");DBObjectquery=newBasicDBObject();query.put("_id",newObjectId("4e12e3c3912b22d362bdc022"));DBObjectuser=coll.findOne
6、(query);if(user!=null){ObjectuserCollection=user.get("userCollection");if(userCollectioninstanceofList){ListrefList=newArrayList();Listlist=(List)userCollection;for(Objectobj:list){if(objinstanceofDBRef){DBRefref=(DBRef)obj;refList.add(ref);}}System.out.println("userCol
7、lectiontypeisList");System.out.println("refList'ssize:"+refList.size());}if(userCollectioninstanceofObject[]){ListrefList=newArrayList();Object[]array=(Object[])userCollection;for(Objectobj:array){if(objinstanceofDBRef){DBRefref=(DBRef)obj;refList.add(ref);}}System.out.
8、println("use
此文档下载收益归作者所有