[英]MongoDB Java driver: check if an $and filter is empty
關於MongoDB Java驅動程序,我有一個非常具體的問題。 詳細地說,我從應用程序中動態地構建了一個$and
過濾器。 如果與$and
關聯的過濾器數組為空,則會出現以下錯誤:
錯誤的查詢:BadValue:$ and / $ or / $ nor必須是一個非空數組
為了解決這個問題,我想急切地檢查$and
過濾器是否為空。 我手上有一個BSon
對象。 我可以使用以下代碼在BSonDocument
進行轉換。
filter.toBsonDocument(BsonDocument.class, MongoClient.getDefaultCodecRegistry())
問題是我找不到標准方法來檢查文檔正文是否為空。 方法isEmpty()
返回false
,因為存在$and
過濾器。 然后,我嘗試使用這種方法:
filter.toBsonDocument(BsonDocument.class, MongoClient.getDefaultCodecRegistry())
.entrySet()
.stream()
.filter(entry -> {
final BsonValue value = entry.getValue();
if (value.isArray())
return value.asArray().size() == 0;
return false;
})
.count() != 0;
上面的代碼聽起來像是代碼氣味。 是否有完成此任務的標准方法? 我正在使用的Mongo版本是3.3。
提前致謝。
您可以嘗試這樣。
BsonDocument andFilterDoc = filter.toBsonDocument(BsonDocument.class, MongoClient.getDefaultCodecRegistry())
用於檢查$and
過濾器文檔是否為空。
andFilterDoc.get("$and").asArray().isEmpty()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.