2013-07-21 55 views
2

我设置的ID,如:如何使用java创建ObjectIds查询?

["51eae104c2e6b6c222ec3432", "51eae104c2e6b6c222ec3432", "51eae104c2e6b6c222ec3432"] 

我需要找到使用这种集ID的所有文件。

BasicDBObject query = new BasicDBObject(); 
    BasicDBList list = new BasicDBList(); 
    ObjectId ob1 = new ObjectId("51eae100c2e6b6c222ec3431"); 
    ObjectId ob2 = new ObjectId("51eae100c2e6b6c222ec3432"); 
    list.add(ob1); 
    list.add(ob2); 
    query.append("_id", new BasicDBObject("$in", list)); 

该查询无法找到任何东西,因为它是一样的

{ "_id" : { "$in" : [ { "$oid" : "51eae100c2e6b6c222ec3431"} , { "$oid" : "51eae100c2e6b6c222ec3432"}]}} 

找到的东西一定是

{_id:{$in:[ObjectId("51eae100c2e6b6c222ec3431") , ObjectId("51eae104c2e6b6c222ec3432")]}} 

,但我不知道如何使ObjectId("51eae100c2e6b6c222ec3431")在使用java的列表

+0

[MongoDB Java:使用QueryBuilder $ in运算符在Mongo中查找对象不会返回任何内容](http://go.microsoft.com/fwlink/?LinkId=160128)(可能为英文网页) -in-operator-returns-n) – WiredPrairie

回答

3

{ "$oid" : "51eae100c2e6b6c222ec3431"}ObjectId("51eae100c2e6b6c222ec3431")只是以不同的格式。

为不同格式见本页面:http://docs.mongodb.org/manual/reference/mongodb-extended-json/

如果查询没有找到任何文件(和你确定它们存在的集合),那么有一些其他的问题。我会仔细检查您要连接的服务器以及数据库和集合的名称。

Rob。

+0

我刚刚从mongo shell检查过,这个查询{_id:{$ in:[{“$ oid”:“51ebf50bc2e66fa145ddaa30”},{“$ oid”:“51ebf510c2e66fa145ddaa31”}]} }不会返回任何东西,尽管文档中包含这些oid – biomaks

+2

“shell模式”格式是ObjectId(“51eae100c2e6b6c222ec3431”)。 Java驱动程序的JSON实用程序将ObjectId转换为严格的格式{“$ oid”:“51eae100c2e6b6c222ec3431”}。查询是否可以从Java中运行? –

+0

是的,它从java的作品。谢谢。但另一个问题是查询只返回一个文档而不是两个。 – biomaks