【发布时间】:2011-07-24 11:38:58
【问题描述】:
我有一个 MongoDB,我想获取两条或更多条记录并将其放入地图中。
如果我只有一个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"));
}
我将如何获得地图中的两条或更多记录?
对于 SQL,等效值为 SELCT * FROM Member WHERE id = 7 AND id = 3
如果我可以给出一个列表作为查询,那就更完美了,不确定这是否可能。
【问题讨论】:
-
一个 id 7 和 id 3 的帖子?您的意思是帖子应该有 id 3 或 id 7,而不是两者。
-
从你的最后一句话来看,我认为你要发布的SQL是
SELECT * FROM Member WHERE id IN ( 7, 3 )。请编辑问题以使用正确的等效 SQL,即实际上会返回一些行的东西。 -
在那条
query.put声明中,您复制/粘贴了吗?这应该是id中的标准i吗?id不应该同时打开和关闭“吗?请复制/粘贴这些内容,而不是输入代码中的“类似”。 -
在结果中我想要两条记录,其中 id = 3 和 id = 4
-
@Marc:术语是“或”,而不是“和”。您想检索
id为3 或 7 的记录。考虑一下如果您说要检索带有id3 和name“foo”的记录是什么意思。你的意思是只有那些 both 都是真的记录,对吧?所以没有记录可能匹配“id是 3 和 7”(除非id是某种多值字段或其他东西)。
标签: java mongodb mongo-java