使用 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 只会保存被推入数组的对象的第一个键值

mongoose.findByIdAndUpdate 只会保存被推入数组的对象的第一个键值

如果不存在,Mongoose 将多个对象添加到数组

键数组,在 json 对象中查找值

如果不存在,Mongoose会将多个对象添加到数组中

javascript 根据键值在数组中查找和删除对象