我真的不知道如何说出这个问题的主题。这就是我想要做的。
我的文档看起来像这样:
用户1有一个文档:
{“_id”:ObjectId(“5c8362762ee0d534e38fa7b1”……
我想这会解决你的问题。想法是使用聚合管道(抱歉标签):
db.collection.aggregate([{ $group: { _id: "$PUID", reasons: { $addToSet: "$Reason" } } }, { $match: { reasons: { $all: ["Reason1", "Reason2"] } } }])
在小组阶段,我们按PUID字段对文档进行分组,并创建一组原因(以避免重复)。在比赛阶段,我们只过滤文件,同时包含两个原因。
的 编辑 强> :切换到$ all而不是$ in,感谢JohnnyHK