我刚刚找到了一个可以通过 SSH 连接的开发盒,然后我将 MongoDB 安装到它上面并与 pymongo 连接。但是,当我尝试连接时,出现超时问题。我的问题是如何在通过字符串连接时设置凭据:
client = MongoClient("mongodb://99.99.99.99/db_name")
Run Code Online (Sandbox Code Playgroud)
我在哪里可以设置 SSH 凭据,或者根本不可能以这种方式使用 mongo 服务器?我希望能够进入username:password
,我在这里看到了一些关于 ssh 隧道的内容:
https://www.digitalocean.com/community/tutorials/how-to-securely-configure-a-production-mongodb-server
Run Code Online (Sandbox Code Playgroud) 我有像下面这样的数据库条目,我想按 added_on 排序,但它给出了错误。我们是否有某种方法以这种格式对日期进行排序,或者建议使用某种其他格式的存储日期
{
"_id" : ObjectId("57d1a9dc1170b35414a180d7"),
"c" : "TPCG",
"modified_on" : ISODate("2016-09-08T18:11:40.150Z"),
"euuu" : "5",
"owner" : null,
"added_on" : ISODate("2016-09-08T18:11:40.150Z")
}
Run Code Online (Sandbox Code Playgroud)
错误
> db.testjobs.find({'add_on':{$lte: ISODate("2016-09-08T18:11:40.150Z")}}).sort('added_on',-1).limit(3)
Error: error: {
"$err" : "Can't canonicalize query: BadValue sort must be object or array",
"code" : 17287
}
>db.testjobs.find().sort('added_on',-1)
Error: error: {
"$err" : "Can't canonicalize query: BadValue sort must be object or array",
"code" : 17287
Run Code Online (Sandbox Code Playgroud) 使用 pymongo 客户端从 MongoDB 获取记录的代码段
from bson.json_util import dumps
cursor = db.collections.find({"Test": "Sample"})
for msg in cursor:
json_msg = dumps(msg)
Run Code Online (Sandbox Code Playgroud)
但是, json_msg 是字符串类型。有没有办法获得可以在 dict 之类的东西中遍历的 JSON 对象?我想在遍历它们时处理检索到的 JSON 对象。
我试过了json.loads(json_msg)
,但这又将 json_msg 转换回 BSON 格式。
编辑:我不只是想打印(这可以通过打印字符串来实现);但是,要迭代和处理 JSON 对象。
我正在尝试使用 Mongo 执行聚合操作,如下所示:
db.inbound_documents.aggregate([{"$match":
{"$completed_on":
{"$gte":'2018-05-19 00:00:00',
"$lte":'2017-05-19 00:00:00'}}},
{"$group":
{"_id":"$completed_by","total":{"$sum":1}}}])
Run Code Online (Sandbox Code Playgroud)
Completed_on 在模式中可用,但我仍然不明白为什么它会导致该错误。
我正在尝试运行 Flask 和 MongoDb 应用程序并收到以下错误。这是我可以使用获取的日志sudo docker logs <container-name>
self._select_servers_loop(
File "/usr/local/lib/python3.10/site-packages/pymongo/topology.py", line 227, in _select_servers_loop
raise ServerSelectionTimeoutError(
pymongo.errors.ServerSelectionTimeoutError: db:27017: timed out, Timeout: 30s, Topology Description: <TopologyDescription id: 626fc61ba785d70a66a1ea12, topology_type: Unknown, servers: [<ServerDescription ('db', 27017) server_type: Unknown, rtt: None, error=NetworkTimeout('db:27017: timed out')>]>
Run Code Online (Sandbox Code Playgroud)
当我尝试访问本地主机时,我在日志中收到上述错误。当我尝试在浏览器中访问本地主机时,我看到connection was reset
错误,然后我看到生成了上述日志。
这是我的 app.py 文件
from flask_restful import Api, Resource
import os
from pymongo import MongoClient
app = Flask(__name__)
api = Api(app)
client = MongoClient("mongodb://db:27017", port=27017, directConnection=True)
db = client.aNewDB
UserNum = db["UserNum"]
UserNum.insert_one({
'num_of_users':0 …
Run Code Online (Sandbox Code Playgroud) 从未使用过 PyMongo,所以我对这个东西很陌生。我希望能够将我的列表之一保存到 MongoDB。例如,我有一个imageIds = ["zw8SeIUW", "f28BYZ"]
经常附加的列表。每次之后append
,列表imageIds
应保存到数据库中。
import pymongo
from pymongo import MongoClient
db = client.databaseForImages
Run Code Online (Sandbox Code Playgroud)
然后后来
imageIds.append(data)
db.databaseForImages.save(imageIds)
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?解决办法是什么?