【mongoDB】Java中使用条件操作符进行查询
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,查询时经常会用到$in之类的操作符,比如db.collection_0.find("_id":{"$in","0001","0002","0003"})。但是shell归shell,java里应该怎么
千家信息网最后更新 2025年01月20日【mongoDB】Java中使用条件操作符进行查询
查询时经常会用到$in之类的操作符,比如db.collection_0.find("_id":{"$in","0001","0002","0003"})。
但是shell归shell,java里应该怎么写,在这就拿$in作为例子。
PS:我喜欢$in,尤其key是一个array类型的时候。
我用的是mongo-java-driver 2.11.0
现在我有个collection叫col_0,然后我在里面存了这么写东西。
假设这是_id为0001的用户有0002和0003两个好友。
现在我想查询一个用户的好友的好友,就像"推荐好友"那样的东西。
Java代码的话,大概可以这样写:
DB db = MonFactory.getInstance().getMongo().getDB("test"); DBCollection dbCollection = db.getCollection("col_0"); BasicDBObject term = new BasicDBObject(); term.put("_id", uid); DBObject curUserData = dbCollection.findOne(term); Listp4pList = new ArrayList (); p4pList.addAll((Collection extends String>) curUserData.get("pals")); DBObject result; term = new BasicDBObject("_id", new BasicDBObject("$in", p4pList)); DBCursor cursor = dbCollection.find(term); while (cursor.hasNext()) { if ((result = cursor.next()) != null) { System.out.println(result.get("pals")); } }
使用的BasicDBObject的构造函数是这样定义的:
/** * creates an object with the given key/value * @param key key under which to store * @param value value to stor */public BasicDBObject(String key, Object value){ super(key, value);}
也就是说我把$in当作key来使用了。
按shell的语法来说貌似是那么回事,但我总觉得这种写法不够OO。
于是我用QueryBuilder这样写:
DB db = MonFactory.getInstance().getMongo().getDB("test"); DBCollection dbCollection = db.getCollection("col_0"); DBObject term = new BasicDBObject(); term.put("_id", uid); DBObject curUserData = dbCollection.findOne(term); Listp4pList = new ArrayList (); p4pList.addAll((Collection extends String>) curUserData.get("pals")); DBObject result;// term = new BasicDBObject("_id", new BasicDBObject("$in", p4pList)); term = QueryBuilder.start().and("id").in(p4pList).get(); DBCursor cursor = dbCollection.find(term); while (cursor.hasNext()) { if ((result = cursor.next()) != null) { System.out.println(result.get("pals")); } }
有时候感觉OO真是自寻烦恼。
无论如何,条件操作符了这样就可以用了。
但我可能对对象关系映射之类的东西习惯了,所以我决定用Morphia什么的。
于是:
Mongo mongo = new MongoClient("localhost", 27017); DataStore store = new DataStore(mongo, "test"); Queryquery = store.createQuery(Person.class); query.criteria("_id").equals(uid); query = store.createQuery(Person.class); query.criteria("_id").in(Arrays.asList(query.get().getPals())); for (Iterator itr = store.createQuery(Person.class) .iterator(); itr.hasNext();) { System.out.println(itr.next().getPals()); }
好友
东西
操作符
查询
用户
条件
无论如何
自寻烦恼
不够
两个
也就是
也就是说
代码
例子
写法
函数
回事
对象
常会
感觉
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发软件设计软件定制
成都rfid系统软件开发
服务器买了之后需要
宝马数据库怎么解压
私聊app软件开发公司
网络技术的差异表现
黄浦区品牌软件开发程序
金道环球投资mt4服务器
现在最流行的软件开发工具
大话西游2最近新开服务器
手机怎么复制文件到服务器
网络安全日是哪年开始的
数据库赵强完整视频
linux如何创建数据库
四川 财政局网络安全 招标
湛江软件开发培训班
带数据数据库导入
星云网络安全有限公司
mysql 连接服务器
山东专业软件开发正规平台
小爱同学直播软件开发
南京戴尔服务器
丁香园数据库
南阳宏瑞网络技术服务有限公司
如何查询期刊数据库正规吗
京东方智造软件开发工程师
微商控制系统软件开发
数据库什么情况下会用到综合查询
陕西先通网络技术培训学校
shell格式化输出数据库