簡體   English   中英

MongoDB Java驅動程序:檢查$ and過濾器是否為空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM