arrays - 在嵌入文档数组中查找特定字段
问题描述
我试图在我的 MongoDB 文档中找到数组的特定元素,但是我的所有尝试查询都返回了所有数组。我怎样才能得到正确的对象?
我收藏的文档如下所示:
{
"Achievements": [
{
"AchievementID": 1,
"AchievementEventID": 0
},
{
"AchievementID": 2,
"AchievementEventID": 1
}
],
"Buildings": [
{
"BuildingID": 1,
"BuildingType": "type1"
},
{
"BuildingID": 2,
"BuildingType": "type1"
},
]
}
我试图只获取Achievements
数组的一个元素:
db.data.find({'Achievements.AchievementEventID': 0})
我希望只得到AchievementEventID
等于 0 的元素:
{
"AchievementID": 1,
"AchievementEventID": 0
}
但我得到了整个Achievements
数组。我怎么能只得到特定的元素?
解决方案
您可以为此使用 $elemMatch
db.data.find(
{ 'Achievements.AchievementEventID': 0},{Buildings:0, Achievements: {$elemMatch: {AchievementEventID: 0}}}
)
如果上述解决方案不适合您,请尝试以下解决方案:
db.data.find({"Achievements.AchievementEventID": 0}, {Buildings: 0, 'Achievements.$': 1});
推荐阅读
- python - 在 Loop 中平均实时数据
- php - 如何使用 Codeigniter 库和 MongoDB 创建二维球体索引?
- php - 如何从表单输入中获取绝对值?
- php - 原则 2:columnDefinition ENUM 不起作用
- sql-server - 240 秒后的 SSRS 错误
- json - 如何使用“()”这个括号而不是这个“[]”来获取json数据?
- hadoop - 从 twitter 流式传输数据时如何解决水槽中的 404 错误?
- ios - CMMotionActivityManager startActivityUpdates 保持在调用 stopActivityUpdates() 后检测用户活动
- r - 在不使用 R 硬编码的情况下迭代模型
- sql - 这是一个子查询还是只是一个内部连接