【问题标题】:How to find duplicate values in different object fields?如何在不同的对象字段中查找重复值?
【发布时间】:2019-05-01 10:57:44
【问题描述】:

如何使用mongoose 搜索以查找不同字段中的重复值?


这是示例文档:

{
 "followers": {
               {
                "_id": "5bf6d610d3a3f31a6c75a9f4"
               },
               {
                "_id": "5bf6d610d3a3f31a6c75a8c3"
               }
              },
 "following": {
               {
                "_id": "5bf6d610d3a3f31a6c75a9f4"
               },
               {
                "_id": "5bf6d610d3a3f31a6c75b7a2"
               }
              },
}

我想在followersfollowing 字段下找到相同的_id 值。

预期输出:

{
 {
  "_id": "5bf6d610d3a3f31a6c75a9f4"
 }
}

我应该使用什么查询?

【问题讨论】:

  • followersfollowing 将是数组。对吗?
  • @HardikShah 是的!

标签: javascript node.js mongodb mongoose aggregation-framework


【解决方案1】:

试试这个:

db.collection.aggregate([
    { $unwind : "$followers"},
    { $unwind : "$following"},
    { $project : {
        _id: 0,
        matchId: { $cond: [ {$eq: [ "$followers._id", "$following._id" ]} ,
          "$following._id", null ] }
    }},
    {$match : {"matchId" : {$ne : null}}}
])

输出:

/* 1 */
{
    "matchId" : "5bf6d610d3a3f31a6c75a9f4"
}

【讨论】:

  • 谢谢,但是我如何在单个文档中查询(我想在单个文档中找到重复的 id,但在两个不同的字段中)
  • 是的,您可以使用我提供的相同 sn-p。只需将 $match 添加到聚合顶层的特定 Id 即可。您可以发布整个示例数据结构吗?所以,我可以根据您的要求进行修改。
猜你喜欢
  • 2017-08-31
  • 1970-01-01
  • 2021-08-26
  • 2015-03-27
  • 2023-03-19
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
  • 2019-09-21
相关资源
最近更新 更多