我得到了这样的文档结构:
{
"_id": "106.xxx.xxx.xxx",
"maxAge": 48,
"origin": "some_origin",
"time": "2016-07-04 11:41:47"
}
_id包含一个IP-Adress,我想用pymongo的find_one函数获取。 我这样称呼它:
return (self.posts.find_one({"_id": ip}))
它返回的全部是"无"因为它没有找到该文件。任何想法?
编辑: 我也试着称之为:
return (self.posts.find_one({"_id": str(ip)}))
更多信息: 我有一个名为" vpn_service"的数据库。在docker容器中运行。 该集合名为" vpn_service"。
首先我试图像这样启动Mongoclient:
def __init__(self, host, port):
self.client = MongoClient(host=host, port=port)
self.db = self.client.vpn_service
self.posts = self.db.posts
我也试过这个:
def __init__(self, host, port):
self.client = MongoClient(host=host, port=port)
self.db = self.client.vpn_service
self.collection = self.db.vpn_service
self.posts = self.collection.posts
因为只有posts.find_one()找不到任何内容,否则它可能是连接问题。
答案 0 :(得分:0)
检查ip
是否为string类型。这可能会在搜索过程中产生问题。如果不尝试将其类型化为字符串。
答案 1 :(得分:0)
这意味着它无法找到该文件。
确保文档存在,并且您正在查询正确的类型 - 字符串。
还要测试你的pymongo连接(用你的值改变我的价值观):
from pymongo import MongoClient
client = MongoClient('localhost')
db_name = 'test_db'
db = client[db_name]
collection_name = 'test_collection'
collection = db[collection_name]
print collection
打印结果:
收藏(数据库(MongoClient('localhost',27017),u'test_db'),u'test_collection')