簡體   English   中英

如何使用java檢查MongoDB中的字符串數組是否為空?

[英]How can I check if an array of strings is empty in MongoDB with java?

想象一下,我有一個包含以下格式文檔的數據庫:

{
  "id": "12345",
  "address": ["adress1","adress2","adress3"]

}

現在想象這可能是一個 id 沒有地址的情況

{
  "id": "12346",
  "address": [""]

}

我試過,在查詢數據庫並獲取我想要的 id 的文檔后,.isEmpty(),但它返回 false。

這可以使用 MongoDB 完成嗎?

如果您必須處理空白地址( "address": [""]"address": []不同,而"address": null與根本不設置address字段不同,那么您有像這樣查詢L

db.foo.aggregate([
{$addFields: {X: {$reduce: {
                input: "$address",
                initialValue: 0,
                in: {$sum: [ "$$value", {"$cond":[ {"$ne": ["$$this",""]}, 1, 0]} \
]}
            }}
    }}
,{$match: {"X": {$gt:0} }}
                       ]);

我們使用$reduce函數來“遍歷” address數組並檢查每個項目以查看它是否不是空字符串。 如果不是空白,我們增加$$value字段,最后分配給新字段X 如果數組不存在或只包含空白地址(一個或多個),那么X將為零,我們用后續的$match過濾掉那些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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