【问题标题】:How to find the data inside of array using mongoose如何使用猫鼬查找数组内部的数据
【发布时间】:2019-08-16 13:58:24
【问题描述】:

我在 MongoDB 中有如下数据。

const A = { uid: '1234',
            works: [
           { name: 'car',
             item:['tire','wheel']
           },
           { name: 'ship',
             item:['tire','wheel']
           }
           ]

我的目标是查找重复的名称是否存在。
总之,我只想得到名字。
所以'res.send(result)'给了我'[汽车,船]'。 但是下面的代码不起作用。我怎样才能实现这个功能?太感谢了。

const workName = await User.findOne({
      uid: userID, works:{$in:['name']}
    });

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    简单的方法是查找名称的聚合并检查计数是否大于一。由于它在数组内部,我们需要展开它。

    以下查询有效,用于检测子文档是否包含每个文档的重复项。

    db.getCollection('collection_name').aggregate([{"$unwind":"$works"} ,{"$group":{"_id":{"name":"$works.name","uid":"$uid"},"count":{"$sum":1}}},{"$match":{"count":{"$gte":2}}}])
    

    如果您想在所有文档中查找,请从组的 _id 中删除 uid。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 2017-04-03
      • 2022-01-26
      • 2023-01-22
      • 1970-01-01
      相关资源
      最近更新 更多