Java Mongo数据库,选择*其中id=3和id=4
我有一个MongoDB,我想得到两个或更多的记录,并把它放在地图上。 如果我只有一个Java Mongo数据库,选择*其中id=3和id=4,java,mongodb,mongo-java,Java,Mongodb,Mongo Java,我有一个MongoDB,我想得到两个或更多的记录,并把它放在地图上。 如果我只有一个query.put(ïd”,“7”);,那么下面的代码可以正常工作,但是如果我像下面的代码那样放入两个或更多的查询,那么它就不工作了 Map<Object,Object> map= new HashMap<Object,Object>(); DBCollection collection = database.getCollection("Members"); Ba
query.put(ïd”,“7”);
,那么下面的代码可以正常工作,但是如果我像下面的代码那样放入两个或更多的查询,那么它就不工作了
Map<Object,Object> map= new HashMap<Object,Object>();
DBCollection collection = database.getCollection("Members");
BasicDBObject query = new BasicDBObject();
query.put("id", "7");
query.put("id", "3");
DBCursor cursor = collection.find(query);
DBObject one;
while(cursor.hasNext()) {
one = cursor.next();
map.put(one.get("id"),one.get("name"));
}
Map Map=newhashmap();
DBCollection=database.getCollection(“成员”);
BasicDBObject查询=新建BasicDBObject();
查询.put(“id”,“7”);
查询.投入(“id”,“3”);
DBCursor=collection.find(查询);
对象一;
while(cursor.hasNext()){
one=游标。next();
map.put(one.get(“id”)、one.get(“name”);
}
我怎样才能在地图上找到两条或更多的记录?
对于SQL,等价物是SELCT*FROM成员,其中id=7和id=3
更完美的是,如果我可以给出一个列表作为查询,但不确定这是否可行。我想你想要的是,类似于:
Map<Object,Object> map= new HashMap<Object,Object>();
DBCollection collection = database.getCollection("Members");
BasicDBObject query = new BasicDBObject();
query.put("id", new BasicDBObject("$in", new Integer[] {3, 7}));
DBCursor cursor = collection.find(query);
DBObject one;
while(cursor.hasNext()) {
one = cursor.next();
map.put(one.get("id"),one.get("name"));
}
Map Map=newhashmap();
DBCollection=database.getCollection(“成员”);
BasicDBObject查询=新建BasicDBObject();
put(“id”,新的BasicDBObject(“$in”,新的整数[]{3,7}));
DBCursor=collection.find(查询);
对象一;
while(cursor.hasNext()){
one=游标。next();
map.put(one.get(“id”)、one.get(“name”);
}
…假设值为Integer
s。我认为数组和BasicDBList
实例都受支持。我认为您需要,类似于:
Map<Object,Object> map= new HashMap<Object,Object>();
DBCollection collection = database.getCollection("Members");
BasicDBObject query = new BasicDBObject();
query.put("id", new BasicDBObject("$in", new Integer[] {3, 7}));
DBCursor cursor = collection.find(query);
DBObject one;
while(cursor.hasNext()) {
one = cursor.next();
map.put(one.get("id"),one.get("name"));
}
Map Map=newhashmap();
DBCollection=database.getCollection(“成员”);
BasicDBObject查询=新建BasicDBObject();
put(“id”,新的BasicDBObject(“$in”,新的整数[]{3,7}));
DBCursor=collection.find(查询);
对象一;
while(cursor.hasNext()){
one=游标。next();
map.put(one.get(“id”)、one.get(“name”);
}
…假设值是
Integer
s。我认为数组和BasicDBList
实例都受支持。id为7和id为3的帖子?你的意思是帖子应该有id为3或id为7,而不是两者都有。从你的上一句话判断,我认为你想发布的SQL是SELECT*from Member WHERE id IN(7,3)
。请编辑问题以使用正确的等效SQL,即实际返回一些行的SQL。在该查询中。put
语句中,您复制/粘贴了吗?这应该是id
中的标准i
?并且id
不应该同时具有打开和关闭“?请复制/粘贴这些内容,而不是键入“类似”代码中的内容。在结果中,我需要两条记录,其中id=3,其中id=4@Marc:术语为“或”、“非”和。“您要检索id
为3或7的记录。考虑如果你想用“代码> ID <代码> 3和<代码>名称<代码> Foo检索记录,你将意味着什么。你是说只有那些记录都是真的,对吧?因此,没有任何记录可能与“whereid
是3和7”匹配(除非id
是某种多值字段或其他内容)。一篇id为7和id为3的帖子?你的意思是一篇文章应该有id 3或id 7,而不是两者都有。从你最后一句话判断,我认为你想发布的SQL是SELECT*from Member WHERE id IN(7,3)
。请编辑问题以使用正确的等效SQL,即实际返回一些行的SQL。在该查询.put
语句中,是否复制/粘贴了该语句?这应该是id
中的标准i
?id
不应该同时有开头和结尾吗?请复制/粘贴这些内容,而不是键入“类似”代码中的内容。在结果中,我需要两条记录,其中id=3,其中id=4@Marc:术语为“或”、“非”和。“您想要检索id
为3或7的记录。考虑如果你想用“代码> ID <代码> 3和<代码>名称<代码> Foo检索记录,你将意味着什么。你是说只有那些记录都是真的,对吧?因此,没有任何记录可能匹配“其中id
是3和7”(除非id
是某种多值字段或其他内容)。