如何用java表示以下查询(mongodb)
我在MongoDB中有一个JSON,其结构如下:如何用java表示以下查询(mongodb),java,mongodb,Java,Mongodb,我在MongoDB中有一个JSON,其结构如下: { id:"_234234", "stationId":"ALM", "storageData": { } } 要检索storageData等于null的JSON,请在MongoDB中查询如下: db.collection.find({"storageData":{"$gt" : {}}}) 它给了我一个JSON主体的列表,其中包含空的storageData。那么,我如何用Java表示这一点呢 BasicDB
{
id:"_234234",
"stationId":"ALM",
"storageData": {
}
}
要检索storageData
等于null
的JSON,请在MongoDB中查询如下:
db.collection.find({"storageData":{"$gt" : {}}})
它给了我一个JSON主体的列表,其中包含空的storageData
。那么,我如何用Java表示这一点呢
BasicDBObject obj=new BasicDDBObject("storageData", new BasicDBObject("$gt",{}));
collection.find(obj);
我在BasicDBObject(“$gt”,{}”)附近收到一个错误…
如何在Java中表示
(“$gt”,{})
,首先要理解null是一个有效值。这将是有效的:
{
id:"_234234",
StationId:"ALM",
StorageData: null
}
检索文档时,如果请求storagedata为null,则将检索id为_234234的文档
如果您需要检查哪些文档没有键“storagedata”,则使用$exist关键字或以以下方式构造查询:
db.yourcollection.find("this.storagedata == null")
我会通过查询来完成,而不是用Java,因为这会减少cpu时间和内存。这里您只想表示一个空对象:
BasicDBObject query = new BasicDBObject(
"storageData", new BasicDBObject(
"$gt",new BasicDBObject()
)
);
这当然会产生查询:
{ "storageData" : { "$gt" : { } } }
就是这样,只需调用
BasicDBObject
,不带任何参数。我想检查包含storagedata key但里面没有值的文档。这里storagedata是一个子文档。问题非常具体,您只是误解了它。您也不应该以演示的方式使用JavaScript构造进行测试,因为它将无限制地扫描整个集合或索引。OP所示的查询可以与索引绑定。您可能认为它非常具体。毕竟,你自己写的,但是考虑你的句子:用StasaGeDATA等于NULL检索JSON,在MangGDB中查询为:db .Copy.find({ SturaGeDATA):{$$GT:{}}}