我需要使用一组条件从 mongodb 数据库(使用 pymongo)检索一些数据。其中一些条件是可选的,而其他条件可能具有多个可能值。
我想知道是否有一种方法可以根据这些条件“动态”构建 pymongo 查询(而不是为每个可能的条件组合创建单独的查询)。
例如,假设我有一个查询,该查询必须受限于以下条件:
tag包含任何this, is, a,taguser是johnsmithdate_published是在之前today...而另一个查询可能仅限于以下内容:
user是johnsmithdate_published是在之后today摘要:在 pymongo 中,是否有一种方法可以将条件串在一起形成查询,而不必创建所有可能的条件组合?
我正在尝试使用 PyMongo 更新 TTL 集合。试图运行这个我得到“失败没有这样的命令:索引”
client.db.command({'collMod': url,
'index': {'keyPattern': {'dateCreated':1},
'expireAfterSeconds': 3600}})
Run Code Online (Sandbox Code Playgroud)
有人能指出我做错了什么吗?
我想从 python 中的集合中提取文档的最后一个 objectID 并将其存储在 python 对象中。
我正在做这样的事情
db.dataset2.find().sort( {'_id': -1 } ).limit(1);
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误。
TypeError: if no direction is specified, key_or_list must be an instance of the list
Run Code Online (Sandbox Code Playgroud)
请帮忙。
我需要从 mongo (v3.2.10) 集合(使用 Pymongo 3.3.0)中获取大量(例如 1 亿个)文档并对其进行迭代。迭代需要几天时间,我经常遇到由于超时游标而导致的异常。
在我的情况下,我需要在迭代时睡眠不可预测的时间。例如,我可能需要: - 获取 10 个文档 - 睡眠 1 秒 - 获取 1000 个文档 - 睡眠 4 小时 - 获取 1 个文档等
我知道我可以:
似乎一个不错的解决方案是“触摸”光标以使其保持活动状态。因此,例如,我会将长时间的睡眠分成较短的间隔,并在每个间隔之间触摸光标。
我没有看到通过 pymongo 做到这一点的方法,但我想知道是否有人确切知道这是否可行。
将字典插入 MongoDB 后,如何从字典中获取列表?
例如,假设我将此条目存储在集合中:
{'Store': 'Store A','Brands':['Nike','Adidas','Reebok']}
如何访问“商店 A”并仅打印品牌列表?
我只想打印列表中的值:
Nike
Adidas
Reebok
我只是想学习如何使用 MongoDB,似乎在他们的文档中找不到类似的例子。任何帮助,将不胜感激!
当我尝试使用 pymongo 在 mongodb 中选择数据时遇到问题,这是我的代码:
import pymongo
from pymongo import MongoClient
import sys
from datetime import datetime
try:
conn=pymongo.MongoClient('10.33.109.228',27017)
db=conn.mnemosyne
data_ip=db.session.aggregate({'$match':{'timestamp':{'$gte': ISODate('2016-11-11T00:00:00.000Z'),'$lte': ISODate('2016-11-11T23:59:59.000Z')}}},{'$group':{'_id':'$source_ip'}})
for f in data_ip:
print f['_id']
except pymongo.errors.ConnectionFailure, e:
print "Could not connect to MongoDB: %s" % e
Run Code Online (Sandbox Code Playgroud)
当我执行它时,我有一些这样的错误:
Traceback (most recent call last):
File "test.py", line 9, in <module>
data_ip=db.session.aggregate({'$match':{'timestamp':{'$gte': ISODate('2016-11-11T00:00:00.000Z'),'$lte': ISODate('2016-11-11T23:59:59.000Z')}}},{'$group':{'_id':'$source_ip'}})
NameError: name 'ISODate' is not defined
Run Code Online (Sandbox Code Playgroud)
我想要这样的结果:
{ "_id" : "60.18.133.207" }
{ "_id" : "178.254.52.96" }
{ "_id" : "42.229.218.192" }
{ "_id" …Run Code Online (Sandbox Code Playgroud) 我正在清理一个数据集,并且有一个字段性别。在该字段中,有“男性”、“男性”和“男性”等条目。为了解决这个问题,我正在尝试使用 pymongo 更新我的 MongoDB 数据库。
在数据库中,Gender属性是Gender(前面有一个大写的G)
我的代码目前看起来像这样:
import pymongo
from pymongo import MongoClient
db_info = {
'db_name': 'MentalHealth',
'collection_name': 'MentalHealth',
}
if __name__ == "__main__":
mongo_client = MongoClient()
mongo_db = mongo_client[db_info['db_name']]
mongo_collection = mongo_db[db_info['collection_name']]
#normalize to lowercase
mongo_collection.aggregate([{ '$project': { 'Gender':{ '$toLower':"$Gender"}}}])
Run Code Online (Sandbox Code Playgroud)
代码运行没有问题,但数据库没有更新,我不确定代码有什么错误。任何帮助将不胜感激。谢谢!!!
MongoDB 服务器托管在 docker 容器中。创建了一个具有 root 权限的超级用户,可以使用用户名和密码登录。使用 pymodm 从 Python 脚本连接到 MongoDB 服务器。
我可以从 shell 和 Compass 工具连接到 docker 托管的 MongoDB 服务器。使用 Python 脚本以编程方式连接和插入新项目的努力因身份验证失败错误而失败。
脚本如下:
from pymodm import connect
from pymodm import MongoModel, fields
import urllib.parse
class Dummy(MongoModel):
email = fields.EmailField(primary_key=True)
name = fields.CharField()
class Meta:
connection_alias = 'Mongo'
# Establish a connection to the database.
mongo_uri = "mongodb://monadmin:" + urllib.parse.quote("myPassword@123") + "@192.168.x.x:27017/Test"
# Establish a connection to the database.
def Connect2DB()
try:
#connect('mongodb://localhost:27017/PMOTest')
connect(mongo_uri, alias="Mongo")
print("db connection success")
return True …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 atlas 和 pymongo 建立到我的 mongodb 数据库的连接。我正在使用 atlas 页面提供的连接字符串连接我的应用程序,一切似乎都运行良好。我可以连接到我的数据库,但是当我尝试计算我的数据库中有多少条目/检索/将数据发送到 atlas 时,我收到一条错误消息。
import pymongo
import dns
client = pymongo.MongoClient("mongodb+srv://username:<password>@storedinputs-vc4cl.mongodb.net/test?retryWrites=true")
db = client.get_database("dbname")
records = db.collectiontable
count = records.count_documents({})
print(count)
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issue
r certificate (_ssl.c:1056),storedinputs-shard-00-00-vc4cl.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] cer
tificate verify failed: unable to get local issuer certificate (_ssl.c:1056)
Run Code Online (Sandbox Code Playgroud)
我再次逐行尝试,一切正常,直到我尝试计算我的收藏中的文档数量。我很感激我能得到的所有帮助。
我正在尝试从 pymongo 模块导入 MongoClient 类并收到以下错误
Traceback (most recent call last):
File "pymongo.py", line 3, in <module>
import pymongo
File "C:\Users\Iqbal\Desktop\pymongo.py", line 5, in <module>
client = pymongo.MongoClient()
AttributeError: partially initialized module 'pymongo' has no attribute 'MongoClient' (most likely due to a circular import)
Run Code Online (Sandbox Code Playgroud)
我已经安装了最新版本的 pymongo,即 3.10.1
import requests
import pymongo
client = pymongo.MongoClient()
Run Code Online (Sandbox Code Playgroud) pymongo ×10
mongodb ×9
python ×8
database ×1
dictionary ×1
pip ×1
pymodm ×1
python-3.x ×1
ssl ×1