如何使用python查询mongodb中的不同结果?

如何使用python查询mongodb中的不同结果?,第1张

概述我有一个包含多个文档的mongo集合,假设如下(假设Tom因为某种原因在2012年有两位历史教师) {"name" : "Tom""year" : 2012"class" : "History""Teacher" : "Forester"}{"name" : "Tom""year" : 2011"class" : "Math""Teacher" : "Sumpra"} 我有一个包含多个文档的mongo集合,假设如下(假设Tom因为某种原因在2012年有两位历史教师)
{"name" : "Tom""year" : 2012"class" : "History""Teacher" : "Forester"}{"name" : "Tom""year" : 2011"class" : "Math""Teacher" : "Sumpra"}{"name" : "Tom","year" : 2012,"class" : "History","Teacher" : "Reiser"}

我希望能够查询“Tom”曾经拥有的所有不同的类,即使Tom有多个“历史”类和多个教师,我只是希望查询获得Tom所在的最小数量的文档所有这些,并且“历史”显示一次,而不是具有包含重复“历史”的多个文档的查询结果.

我看了看:
http://mongoengine-odm.readthedocs.org/en/latest/guide/querying.html

并希望能够尝试类似的东西:

student_users = Students.objects(name = "Tom",class = "some way to say distinct?")

虽然它似乎没有记录.如果这不是语法上正确的方法,这可能在mongoengine中,或者有一些方法可以用像pymongo这样的其他库来实现吗?或者我是否必须使用Tom查询所有文档然后进行一些后处理才能获得唯一值?无论如何,语法都会受到赞赏.

解决方法 首先,它只能在某些字段(只有一个字段)上获得不同的值,如 Distinct上的MongoDB文档中所述.

Mongoengine的querySet类确实支持distinct()方法来完成这项工作.

所以你可以尝试这样的结果来获得结果:

Students.objects(name="Tom").distinct(fIEld="class")

此查询将生成一个包含Tom参加的类列表的BSON文档.

Attention Note that returned value is a single document,so if it exceeds max document size (16 MB),you’ll get error and in that case you have to switch to map/reduce approach to solve such kind of problems.

总结

以上是内存溢出为你收集整理的如何使用python查询mongodb中的不同结果?全部内容,希望文章能够帮你解决如何使用python查询mongodb中的不同结果?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1206866.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存