我的目标是查询数组中大小小于5的字段。
我尝试了下面的解决方案
MongoDatabase database = mongoClient.getDatabase("Friends");
MongoCollection<Document> collection = database.getCollection("Friend");
BasicDBObject filter = new BasicDBObject("MainArray", new BasicDBObject("$lt", new BasicDBObject("$size", 4)));
collection.find(filter).forEach((Consumer<Document>) doc -> {
//perform operations
}
我想获取小于4的字段
如果我直接把尺寸4——new BasicDBObject("$size",4)
它起作用了
但是我想要获取数组大小小于4的字段在这种情况下它不起作用
请提出你的宝贵意见。
您没有使用注释。
{$expr:{$lt:[{$size:"$MainArray"}, 5]}}
您需要使用$expr
在simple find中使用操作符。
在BasicDBObject
中等效为
new BasicDBObject("$expr",
new BasicDBObject("$lt",
Arrays<DBObject>.asList(new BasicDBObject("$size", "$MainArray"), 5)
)
)