javascript - 查询对象数组以检查它是否包含 mongoose 中的字符串数组
问题描述
说我的数据库中有以下内容:
knights
{
name: 'Knightley',
skills: [
{ name: 'sword', level: 2 },
{ name: 'shield', level: 1 }
]
},
{
name: 'Cowardly',
skills: [
{ name: 'sword', level: 1 },
{ name: 'shield', level: 5 }
]
}
我想用剑和盾的技能归还所有骑士。像这样的东西(伪):
Knight.find({ skills.name: which contains ['sword', 'shield'] })
我该如何做这种查询?谢谢!
解决方案
您需要使用运算符$elemMatch
在数组内部查找$in
db.collection.find({
skills: {
$elemMatch: {
name: { $in: ["sword", "shield"] }
}
}
})
输出
[
{
"name": "Knightley",
"skills": [
{
"level": 2,
"name": "sword"
},
{
"level": 1,
"name": "shield"
}
]
},
{
"name": "Cowardly",
"skills": [
{
"level": 1,
"name": "sword"
},
{
"level": 5,
"name": "shield"
}
]
}
]
在这里检查
推荐阅读
- ios - UICollectionView 项目间距不是恒定的
- c# - 数组中的最小数字,C#
- excel - 按唯一标识符发送电子邮件,按 ID 分组 #
- r - 有没有办法在 R 中使用 ggplot2 进行高级自动化绘图?
- python - 如何在python中创建一个以参数为条件的嵌套列表
- python - 将 pytorch 模型转换为 Coreml 时出错。层有 1 个输入,但预计至少有 2 个
- angular - Angular 11 Ngxs-Storage-Plugin 恢复日期
- c - 访问被拒绝 c 程序
- python - 使用任何关键字都不是按要求过滤
- byte-buddy - ByteBuddy 调用生成类的构造函数