我遇到以下問題。 Pymongo返回的字段比它應該少。pymongo返回較少的字段
這裏是我的查詢: db.users.findOne({'e.email': '[email protected]', application: 'App1'})
直接從蒙戈DB我得到: { "_id" : ObjectId("51803128e4b092fd00c8899b"), "application": "App1", "d" : ISODate("2013-04-30T21:01:28.084Z"), "e" : [ { "email" : "[email protected]", "isValidated" : true } ], "fn" : "XXX", "l" : "en_US", "ln" : YYY", "si" : [ { "isTokenExpired" : true, "oAuth" : { "value" : "", "permissions" : [ ] }, "sIden" : { "id" : "123", "network" : 0 } } ], "tz" : "Etc/UTC" }
但pymongo不返回 「SI」 陣列上相同的查詢和領域LN,FN是空的:
query = collection.find_one({'e.email': '[email protected]', application: 'App1'})
print query
[{u'application': 'App1', u'tz': u'Etc/UTC', u'd': datetime.datetime(2013, 4, 30, 22, 52, 45, 916000), u'ln': u'', u'l': u'en_US', u'e': [{u'isValidated': True, u'email': u'[email protected]'}],u'_id': ObjectId('51804b3de4b092fd00c88d1b'), u'fn': u''}]
什麼問題?謝謝!
您可以檢查是否有超過1個文件滿足此查詢條件。如果在兩個結果中觀察到_id字段是不同的。 'd'參數也不同。所以他們很可能都沒有拿到相同的文件。 – 2013-04-30 23:44:14
只有一個這樣的文檔。一個應用程序不能有兩個完全相同的電子郵件。但我也試過find而不是find_one,並檢查了只有一個。 – 2013-05-01 00:09:45
即使「ln」字段也不匹配。你能創建一些虛擬文件並測試嗎? – 2013-05-01 00:16:24