2017-05-29 16 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,只要我從上面的例子中得到的唯一答案是上面的幾條警告線。也許我可以在私人頻道上與您分享只讀地址,以便測試它嗎? –