如何在mongo的不同字段中获取具有值的文档数
Posted
技术标签:
【中文标题】如何在mongo的不同字段中获取具有值的文档数【英文标题】:how to get the count of documents with value in different fields in mongo 【发布时间】:2020-10-02 18:55:58 【问题描述】:我有一些文件如下
_id: 1,
lender_id: 10,
borrower_id: 20,
message: 'Message from lender'
,
_id: 2,
lender_id: 20,
borrower_id: 10,
message: 'Response to lender'
_id: 3,
lender_id: 10,
borrower_id: 30,
message: 'Message to other user'
当lender_id 字段或borrower_id 等于10 时,我想在这种特殊情况下获取文档的计数。
我试试这个:
chats = await Chat.aggregate([
$match: $or: [
lender_id: 10,
borrower_id: 10
]
,
$group:
_id: null,
differentChats: $sum: 1
,
])
// Response: [ _id: null, differentChats: 3 ] --- must be 2
我如何获得唯一聊天的总数。 谢谢阅读。
【问题讨论】:
【参考方案1】:我们需要创建一个唯一的lender_id
和borrower_id
的Set
,如下所示(通过更改顺序)。在最后阶段,我们采用Set
大小。
chats = await Chat.aggregate([
$match:
$or: [ lender_id: 10, borrower_id: 10 ]
,
$group:
_id: null,
differentChats:
$addToSet:
$cond: [
$gt: ["$lender_id", "$borrower_id"],
[ "$lender_id", "$borrower_id" ],
[ "$borrower_id", "$lender_id" ]
]
,
$project:
differentChats: $size: "$differentChats"
])
MongoPlayground
【讨论】:
以上是关于如何在mongo的不同字段中获取具有值的文档数的主要内容,如果未能解决你的问题,请参考以下文章