【发布时间】:2020-09-15 11:49:16
【问题描述】:
我有项目列表表(如图片)。现在我想找到一个具有name 包含searchString 的对象。
我试过像db.getCollection('vehicles').find({'result': {'name': 'A-WING FIGHTER'}}) 这样的查询,但它看起来不对。
在这种情况下如何获得真实数据?
【问题讨论】:
标签: arrays mongodb mongoose nested find
我有项目列表表(如图片)。现在我想找到一个具有name 包含searchString 的对象。
我试过像db.getCollection('vehicles').find({'result': {'name': 'A-WING FIGHTER'}}) 这样的查询,但它看起来不对。
在这种情况下如何获得真实数据?
【问题讨论】:
标签: arrays mongodb mongoose nested find
通过这个
db.getCollection('vehicles').find({ 'result': { 'name': 'A-WING FIGHTER' } })
您正在搜索完全匹配,因此结果必须是仅具有属性名称的对象
你应该改用点符号
db.getCollection('vehicles').find({ 'results.name': 'A-WING FIGHTER' })
希望对你有帮助
【讨论】:
看看下面的命令是否有效-
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'}) 也应该可以工作。
要在 MongoDB 中搜索数组的数组,可以使用 $elemMatch 运算符。
试试这个查询(这个查询是根据你分享的图片)
db.getCollection('items').find({'results': {'$elemMatch: {'$elemMatch: {'name': 'A-WING FIGHTER'}}}})
希望这会有所帮助。
【讨论】: