json - MongoDB查询过滤对象数组和格式返回对象
问题描述
我有一个这样的 MongoDB 集合:
{
"_id" : "course1",
"teams" : [
{
"key" : "1548600639880X5269760768997986",
"title": "Team One",
"members" : {
"user1" : true
}
},
{
"key" : "1548601941683X14679065888073906",
"title": "Team Two",
"members" : {
"user2" : true,
"user3" : true
}
},
{
"key" : "1548602385020X41594057288000386",
"title": "Team Three",
"members" : {
"user4" : true
}
}
],
"updated_at" : "2019-01-27T15:31:43+00:00"
}
我正在尝试让 user2 的“团队”与所有值为 true 的用户一起使用。所以返回对象应该是这样的:
{
"key" : "1548601941683X14679065888073906",
"title": "Team Two",
"members" : {
"user2" : true,
"user3" : true
}
}
我用 db.getCollection('').find({}) 做了很多尝试,但没有得到所需的结果。
解决方案
db.getCollection('teams').find({
"_id": "course1",
"teams.members": { "user1": true }
})
得到我
{
"_id" : "course1",
"teams" : [
{
"key" : "1548600639880X5269760768997986",
"title" : "Team One",
"members" : {
"user1" : true
}
},
{
"key" : "1548601941683X14679065888073906",
"title" : "Team Two",
"members" : {
"user2" : true,
"user3" : true
}
},
{
"key" : "1548602385020X41594057288000386",
"title" : "Team Three",
"members" : {
"user4" : true
}
}
],
"updated_at" : "2019-01-27T15:31:43+00:00"
}
推荐阅读
- c++ - 为什么编译器在执行operator<时不能使用类的std::string转换函数
考虑以下
struct
使用用户定义的转换函数,该函数可以将自身转换为const char*
;struct S { operator const char*() { return "hello"; } };
与 一起工作
<io
- python - Python 中的正则表达式完全匹配与组匹配
- haskell - Haskell 词法分析器输入和返回标记或错误列表
- sql - 带有选定列的 sql dw count(*) 不会聚合
- c++ - C++,使用 iostream 库输出未初始化的变量 \ Visual Basic
- firebase - 无法设置将集合导出到 BigQuery 扩展程序。无法卸载:无法从服务帐号中删除 IAM 角色
- javascript - 如果存在验证错误,防止引导模式关闭
- c++ - 在 c++/cli 中设置指向指针的指针
- python - 使用可变参数测试函数
- php - php 开关未按预期运行