如何在java中表示以下查询(mongodb)

时间:2014-05-02 19:36:50

标签: java mongodb

我在MongoDB中有一个JSON,结构如下:

{
    id:"_234234",
    "stationId":"ALM",
    "storageData": {

    }
}

要检索storageData等于null的JSON,在MongoDB中我查询为:

db.collection.find({"storageData":{"$gt" : {}}})

它为我提供了空storageData的JSON实体列表。那么我该如何在Java中表示呢

BasicDBObject obj=new BasicDDBObject("storageData", new BasicDBObject("$gt",{}));
collection.find(obj);

我在BasicDBObject("$gt",{}))...

附近收到错误消息

如何在Java中表示("$gt",{})

2 个答案:

答案 0 :(得分:0)

首先要了解null是一个有效值。这是有效的:

{
    id:"_234234",
    StationId:"ALM",
    StorageData: null 
}

并检索文档,询问null的storagedata将检索id为_234234的doc。

如果您需要检查哪些文件不具有密钥" storagedata"然后使用$ exist关键字或以这种方式构造查询:

db.yourcollection.find("this.storagedata == null")

我会通过查询来完成,而不是在Java中,因为它可以减轻cpu时间和内存。

答案 1 :(得分:0)

您想要的所有内容都代表一个空对象:

BasicDBObject query = new BasicDBObject(
    "storageData", new BasicDBObject(
        "$gt",new BasicDBObject()
     )
);

当然会产生查询:

{ "storageData" : { "$gt" : { } } }

这就是它,只需在没有任何参数的情况下调用BasicDBObject