使用 mongoose 在对象数组中查找键
Posted
技术标签:
【中文标题】使用 mongoose 在对象数组中查找键【英文标题】:Use mongoose to find a key inside array of object 【发布时间】:2020-09-15 11:49:16 【问题描述】:我有项目列表表(如图片)。现在我想找到一个具有name
包含searchString
的对象。
我试过像db.getCollection('vehicles').find('result': 'name': 'A-WING FIGHTER')
这样的查询,但它看起来不对。
在这种情况下如何获得真实数据?
【问题讨论】:
【参考方案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')
希望这会有所帮助。
【讨论】:
以上是关于使用 mongoose 在对象数组中查找键的主要内容,如果未能解决你的问题,请参考以下文章
mongoose.findByIdAndUpdate 只会保存被推入数组的对象的第一个键值