Java 在mongodb文档中查找字段

Java 在mongodb文档中查找字段,java,mongodb,mongodb-java,nosql,Java,Mongodb,Mongodb Java,Nosql,我试图使用java驱动程序询问mongodb数据库中的另一个文档中的文档中是否存在字段。我要求的领域是idMovie 例如,如果idMovie为2,我希望它在控制台中打印“idMovie value ready exist”。如果idMovie为10,则打印“不存在”,因为文档中没有10 这是我的bson对象: { "_id" : { "$oid" : "5320aa3c3e468eaeb52dccdc"}, "document" : "movies" , "rateMovie

我试图使用java驱动程序询问mongodb数据库中的另一个文档中的文档中是否存在字段。我要求的领域是idMovie

例如,如果idMovie为2,我希望它在控制台中打印“idMovie value ready exist”。如果idMovie为10,则打印“不存在”,因为文档中没有10

这是我的bson对象:

 { "_id" : { "$oid" : "5320aa3c3e468eaeb52dccdc"}, 
   "document" : "movies" , 
   "rateMovies" : [ 
        { 
         "idMovie" : 2 , 
         "average" : "0" , 
         "sum" : "0" , 
         "total" : "0"
        } , 

       { 
         "idMovie" : 3 ,
         "average" : "0" ,
         "sum" : "0" , 
         "total" : "0"
       }]
  } 
这是我的java代码:

MongoClient mongo = new MongoClient ("localhost", 27017);
        DB db = mongo.getDB("DBHC2");
        DBCollection movieDocument = db.getCollection("rateMovies");

        BasicDBObject searchQuery = new BasicDBObject();
        searchQuery.put("idMovie", idMovie);
        DBCursor cursor = movieDocument.find(searchQuery);

        /* if is true, the idMovie value already exist in database. */
        if(cursor.hasNext()){
            System.out.println("idMovie value already exist");
        }
        else{
            System.out.println("not exist");
        }
,但不要为我的工作。任何帮助都会收到,谢谢

试试这个:

    searchQuery.put("idMovie", new BasicDBObject("$exists",true));

谢谢你的帮助,但我自己找到了答案

        MongoClient mongo = new MongoClient ("localhost", 27017);
        DB db = mongo.getDB("DBHC2");
        DBCollection movieDocument = db.getCollection("movies");

        BasicDBObject searchQuery = new BasicDBObject();
        searchQuery.put("rateMovies.idMovie", idMovie);
        DBCursor cursor = movieDocument.find(searchQuery);

“但不起作用”是不够的。它怎么不起作用?你看到了什么意想不到的事情?您是否在IDE调试器中逐步完成了代码?这告诉了你什么?好吧,如果你遵循java代码,我希望它在控制台中打印“idMovie value ready exist”,例如,如果idMovie为2。如果idMovie为10,则打印“不存在”,因为文档中没有10。谢谢。您能确认集合的名称是否为“rateMovies”吗?是的,名称正确。您能从shell发布db.rateMovies.findOne()的输出吗?例如,如果您遵循java代码,我希望它在控制台中打印“idMovie value ready exists”,如果idMovie为2。如果idMovie为10,则打印“不存在”,因为文档中没有10。谢谢