【问题标题】:Use mongoose to find a key inside array of object使用 mongoose 在对象数组中查找键
【发布时间】:2020-09-15 11:49:16
【问题描述】:

我有项目列表表(如图片)。现在我想找到一个具有name 包含searchString 的对象。
我试过像db.getCollection('vehicles').find({'result': {'name': 'A-WING FIGHTER'}}) 这样的查询,但它看起来不对。
在这种情况下如何获得真实数据?

【问题讨论】:

    标签: arrays mongodb mongoose nested find


    【解决方案1】:

    通过这个

    db.getCollection('vehicles').find({ 'result': { 'name': 'A-WING FIGHTER' } })
    

    您正在搜索完全匹配,因此结果必须是仅具有属性名称的对象

    你应该改用点符号

    db.getCollection('vehicles').find({ 'results.name': 'A-WING FIGHTER' })
    

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      看看下面的命令是否有效-

      db.getCollection('vehicles').find({'results': {'name': 'A-WING FIGHTER'}})
      

      您命名为 result 而不是 results。试试它现在是否有效...

      你也可以尝试使用下面的代码sn -p -

      db.getCollection('vehicles').find({ results.name: 'A-WING FIGHTER' });
      

      【讨论】:

      • 另外,如果我没记错的话,db.getCollection('vehicles').find({'results': 'A-WING FIGHTER'}) 也应该可以工作。
      【解决方案3】:

      要在 MongoDB 中搜索数组的数组,可以使用 $elemMatch 运算符。

      试试这个查询(这个查询是根据你分享的图片)

      db.getCollection('items').find({'results': {'$elemMatch: {'$elemMatch: {'name': 'A-WING FIGHTER'}}}})
      

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2016-07-28
        • 2020-04-12
        • 1970-01-01
        • 2021-07-08
        • 2018-03-04
        • 1970-01-01
        • 2021-07-02
        • 2014-05-13
        • 1970-01-01
        相关资源
        最近更新 更多