2017-05-29 15 views
2

我有一个数据库集合usersid,...,subscribedFlux。每个id可以有几个subscribedFlux,我想知道多少Flux已订阅。查询与Studio3t行之有效给出预期的结果:Studio3t中的查询和它们与Pymongo等效的区别?

当我做它用Pymongo,我没有得到任何东西:

:~$ python testMongoDB.py 
/home/antoine/anaconda2/lib/python2.7/site-packages/pymongo/common.py:555: UserWarning: Unknown option 3t.databases 
    warnings.warn(str(exc)) 
/home/antoine/anaconda2/lib/python2.7/site-packages/pymongo/common.py:555: UserWarning: Unknown option 3t.uriVersion 
    warnings.warn(str(exc)) 
/home/antoine/anaconda2/lib/python2.7/site-packages/pymongo/common.py:555: UserWarning: Unknown option 3t.connectionMode 
    warnings.warn(str(exc)) 
/home/antoine/anaconda2/lib/python2.7/site-packages/pymongo/common.py:555: UserWarning: Unknown option 3t.connection.name 
    warnings.warn(str(exc)) 

这里是我使用的脚本(我已经隐藏了数据库地址):

#! /usr/bin/python 

import pymongo 
import datetime 
import pprint 

from pymongo import MongoClient 


client = MongoClient('mongodb://swiper_read:[email protected]') 

db = MongoClient().aggregation_example 
cursor = db.users.aggregate(
    [ 
     #{"$match": {"subscribedFlux": { "$exists": "true" }}}, 
     {"$group": {"_id": "$subscribedFlux", "count": {"$sum": 1}}} 
    ] 
) 

for document in cursor: 
    print (document) 
+0

你能告诉我们你的其他代码吗?你是如何定义你的'db'变量的? – errata

+0

@errata我提供了缺少的东西,并注意到我写了'用户'而不是餐厅的集合名称。但它不影响提供的结果。 –

+0

@errata我想,我隐藏了一些部分,因为我认为这是明智的。至少它是我在使用studio3t在“连接”中的“导入URI”选项中连接到它时使用的。这是一个只读的在线。也许有另外一个呢?我成功地使用了[docs.mongodb.com]提供的示例数据库和查询(https://docs.mongodb.com/getting-started/python/aggregation/) –

回答

1

你不应该通过“未知”选项,您的MongoDB的URI像你此刻与3t.databases3t.uriVersion做等等......相反,试试这个:

client = MongoClient('mongodb://user:[email protected]:port/') # pass just these options 

db = client.DATABASE_NAME # or client['DATABASE_NAME'] 
cursor = db.TABLE_NAME.aggregate(
    [ 
     #{"$match": {"subscribedFlux": { "$exists": "true" }}}, 
     {"$group": {"_id": "$subscribedFlux", "count": {"$sum": 1}}} 
    ] 
) 
+0

它仍然显示了我在studio3t中的结果...'aggregation_example'是我在网上阅读其他来源时从无处创建的名称。 –

+0

@AntoineCoppin Hm,用我的本地MongoDB运行您的示例导致了一些数据。你可以双倍/三重检查你是否连接到Studio 3T中的相同数据库和Python代码中? – errata

+0

嗯......只是尝试了只读和普通数据库。它适用于studio3t,我不知道python,只要我从上面的例子中得到的唯一答案是上面的几条警告线。也许我可以在私人频道上与您分享只读地址,以便测试它吗? –