当前位置: 首页 > 面试题库 >

如何使用python选择仅匹配的mongodb子文档

田玉韵
2023-03-14
问题内容
Document in Mongo ->

            {
             emp_id : 11
             proj_info : 
                    [{
                     proj_id : 91
                     proj_name : 'abc'
                     proj_team : 
                            [{
                               name : 'Ravi'
                               member_emp_id : '55'
                               designation : 'manager'
                            }
                            {
                               name : 'Ram'
                               member_emp_id : '66'
                               designation : 'consultant'
                            }]
                    }   
                    {
                     proj_id : 92
                     proj_name : 'pqr'
                     proj_team : 
                            [{
                               name : 'Sham'
                               member_emp_id : '15'
                               designation : 'manager'
                            }]
                    }   
                    {
                     proj_id : 93
                     proj_name : 'xyz'
                     proj_team : 
                            [{
                               name : 'Karan'
                               member_emp_id : '25'
                               designation : 'manager'
                            }]
                    }   
            }]
}

这是我用Python编写的mongoClient查询-

     collectionObject.aggregate([{'$match':"proj_info.proj_team.member_emp_id":'55',"proj_info.proj_id":'91','emp_id':'11'}},
{'$unwind':"$proj_info"},
{'$match': {"proj_info.proj_team.member_emp_id":'55'}},
{'$unwind': "$proj_info.proj_team"},
{"$group": {"_id": "$_id","key": {"$first": "$key"},"proj_team": {"$push": "proj_info.proj_team"}}}]):

例如我想要的输出作为唯一的子文件中,其输入是 emp_id:11proj_id:91member_emp_id:55

我想要预期的输出=>

proj_team : {
               name : 'Ravi'
               member_emp_id : '55'
               designation : 'manager'
            }

请帮我解决。===================== -------- =================


问题答案:

谢谢,但是我仍然必须进行一些更改,因为它没有提供预期的输出,所以我进行了这些更改=>

collectionObject.aggregate([
{'$match':{'emp_id': '11', "proj_info.pro_id": '11'   }},

{'$unwind': "$proj_info"},

{'$match': {"proj_info.proj_team.member_emp_id": '55' }},

{'$unwind': "$proj_info.proj_team"},

{'$project': {"proj_info.proj_team": 1,"_id" : 0}}

]):

这对我有用。

谢谢您的帮助。



 类似资料:
  • 问题内容: 我只想通过“ where子句”从数据库中选择(并返回)一个字段。代码是: 这将失败,并且回溯是: 如何选择并仅返回“ id”列?我也尝试了其他几种方法,但也失败了。是“ load_only”正确的选项吗? 问题答案: 一个对象接受实体查询作为位置参数,所以只是通过它: 返回第一个结果的第一个元素;如果未找到任何行,则返回None。它为多行引发异常。 表示仅应加载实体的给定基于列的属性,

  • 问题内容: 如何仅返回MySQL中字段的第一个不同匹配项? 我的表: 我的查询(用于): 这将返回: 而不是:( 我追求的结果) 如何只获得每个唯一名称的第一个匹配项? 我想返回第一个,跳过第二个(以及任何后续的匹配项),但仍然得到(以及任何其他不同的匹配项,例如或)。 问题答案: 不能以这种方式工作,返回的所有列中的值都必须是不同的。 您可以始终在该函数上使用聚合函数,该函数将为每个函数返回一个

  • 问题内容: 假设我与用户和项目之间存在多对多关系:一个用户可能属于多个项目,而一个项目可能具有多个用户。此关系在表中编码: 这是我的问题:给定一组用户(user1,user2,…),我想选择给定用户集为其所有用户的子集的所有项目。 例如,如果我在下面插入数据,然后询问用户1和2的所有项目,则查询应仅返回项目1。 (如果最好的解决方案恰巧是非标准的,那么我使用的是PostgreSQL。) 编辑: 为

  • 我正在运行Mongodb 3.6。以下是我的文档结构,它存储产品列表的每月费率信息: 对相关联的计费卡的任何更改,都会将更新传播到“费率”数组中的多个子文档。 以下是需要应用于上述文档的更改 有没有一种方法可以在数组速率下更新子文档,而无需将整个文档加载到内存中,以便合并更改?假设我的子文档标识符是,和。 我可以使用

  • 我有一个MongoDB存储来自不同传感器的数据。它具有以下结构: 例如,现在我需要“heart rate”-文档的所有字段和“data”-子文档的所有字段都符合条件“时间戳在1483537204000和1483537214000之间”。

  • 今天下午,我一直在努力寻找一种方法,通过检查熊猫名字(标签?)中某个模式的出现,来选择我的熊猫数据目录中的几列。 (当然,可以应用任何函数) 然后,我找到了函数,并让它使用以下代码: 当然,在第一个解决方案中,我可以执行相同类型的regex检查,因为我可以将它应用于迭代返回的数据类型。

  • 我目前正在Java应用程序上使用MongoDB的驱动程序。假设我将以下两个文档存储在一个集合中: 文件A: 文件B: 现在,我想通过使用key1和key2的值从集合中检索DocumentB的精确匹配,而不返回documenta,而不是_id,因为我事先不知道它。 如果我只是使用DocumentB作为查询(没有_id),Mongo也将返回DocumentA,因为它匹配所有的键和值,不考虑Docume

  • 我有一个基于Spring Boot的Camel应用程序,有一个定义的路由应该轮询特定的文件夹(例如)。在这个文件夹中,有一些子文件夹按一天中的序号命名:196,197,198等。我需要过滤这些子文件夹,并选择名称中最大值的文件夹。换句话说,我需要动态地为文件组件选择文件夹,例如。 这样的子文件夹选择可以使用Camel实现吗? 更新:目前没有机会从代码中扫描根文件夹中的子文件夹,因此解决方案应该只依