簡體   English   中英

MongoDB:如何查詢一系列文檔/詞典中的元素數量?

[英]MongoDB: How do I query for the number of elements in an array of documents/dictionaries?

我有一個包含詞典列表的文檔,這些詞典顯示了用戶的登錄日期和會話ID。 如何使用MongoDB Shell查詢總登錄數?

{

    "uname": "johndoe", 
    "loginActivity": [{}, {'date': '01/30/2018 15:52', 'SID': '02fe602a'}, {'date': '01/31/2018 20:32', 'SID': '2358eeea'}, {'date': '01/31/2018 20:06', 'SID': '3d720386'}, {'date': '01/25/2018 01:41', 'SID': '40b30ff2'}, {'date': '01/30/2018 15:55', 'SID': '4a3b9129'}, {'date': '01/31/2018 11:26', 'SID': '50fcead9'}, {'date': '01/29/2018 11:10', 'SID': '5f1f53c6'}, {'date': '01/25/2018 08:49', 'SID': 'a0123437'}, {'date': '01/26/2018 11:03', 'SID': 'c31daaf9'}, {'date': '01/31/2018 17:16', 'SID': 'd4073ae3'}, {'date': '01/25/2018 09:50', 'SID': 'd8cfe718'}, {'date': '01/25/2018 15:29', 'SID': 'e281c0cc'}, {'date': '01/26/2018 09:40', 'SID': 'e75e032a'}, {'date': '01/30/2018 10:26', 'SID': 'f3cc187f'}],
    "bytesIn": 18751,
    "bytesOut": 8343,
    "country": "US",
    "state": "California"

}

我已經嘗試過以下查詢:

 db.user_information.aggregate( [
     { $match: {uname: "johndoe"}}, 
     { $unwind: "$login_activity"}, 
     { $group: {_id:0, total:{$sum:1}}} 
 ] )

但是我得到這個結果:

 { "_id" : 0, "total" : 1 }

我無法弄清楚我在做什么錯。 如果我在列表的開頭算空括號,結果應返回15。

在這里您可以找到$ group的用法,並找到數組的大小

參考:-https: //docs.mongodb.com/manual/reference/operator/aggregation/group/

您不必在這里使用$ unwind,只需使用$ size運算符

db.user_information.aggregate([
    { $match: {uname: "johndoe"}},
    { $project: { 
        uname: 1,
        total: { $size: "$loginActivity" }
      } 
    }
])

暫無
暫無

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

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