Pymongo 应用程序保存的数据在 mongo shell 中不可用

Pymongo data saved by app is not available in mongo shell

我正在使用 pymongo 构建一个 Flask 应用程序。在我的 python 脚本中,数据使用 .save() 保存,就像它应该的那样,并且可以使用 .find() 检索,如果我重新启动应用程序,它也会持续存在。但是,如果我从另一个终端或停止应用程序后从同一终端检查 mongo 数据库,则数据不存在。为了确保我正确使用 pymongo,我从 w3schools.com:

复制并粘贴了下面的基本脚本
#!/usr/bin/python3
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
mydict = { "name": "John", "address": "Highway 37" }
obj = mycol.insert_one(mydict)
obj = mycol.find_one()
print(obj)

输出为:

{'_id': ObjectId('5f09b0c4dfedb570e2f5411e'), 'name': 'John', 'address': 'Highway 37'}

如您所料。这是 运行 上述脚本之前显示数据库的结果:

> show databases
admin   0.000GB
config  0.000GB
local   0.000GB

这是 运行 在 运行 脚本之后显示数据库的结果:

> show databases
admin   0.000GB
config  0.000GB
local   0.000GB
mydatabase  0.000GB

然而:

use mydatabase
db.mydatabase.customers.find()
>

要么这些集合没有保存在我尝试连接的 mongo 服务器中,要么由于某种原因它们没有显示在 shell 中。这是我的 /etc/mongod.config 文件: (注释行已删除,因此 Whosebug 不会将其格式化为标记)

storage:
  dbPath: /var/lib/mongodb
  journal:
   enabled: true


systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

net:
  port: 27017
  bindIp: 127.0.0.1

processManagement:
  timeZoneInfo: /usr/share/zoneinfo

我不确定这些是否相关,但当我输入 mongo shell:

时总是出现启动警告
MongoDB shell version v4.2.8
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("20a57a18-201c-4393-a9a3-c0ee53e028e8") }
MongoDB server version: 4.2.8
Server has startup warnings: 
2020-07-11T12:16:02.034+0000 I  STORAGE  [initandlisten] 
2020-07-11T12:16:02.034+0000 I  STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2020-07-11T12:16:02.034+0000 I  STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2020-07-11T12:16:02.940+0000 I  CONTROL  [initandlisten] 
2020-07-11T12:16:02.940+0000 I  CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-07-11T12:16:02.940+0000 I  CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2020-07-11T12:16:02.940+0000 I  CONTROL  [initandlisten]

看到“连接到:mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb”后,我试图将 MongoClient 连接更改为“mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb" 只是为了看看是否可行,但它只是抛出错误:

    /home/vagrant/.local/lib/python3.6/site-packages/pymongo/compression_support.py:55: UserWarning: Unsupported compressor: disabled
  warnings.warn("Unsupported compressor: %s" % (compressor,))
/home/vagrant/.local/lib/python3.6/site-packages/pymongo/common.py:756: UserWarning: Unknown option gssapiservicename
  warnings.warn(str(exc))

你要的syntax是:

db.customers.find()

在 shell。您已经使用 use 命令指定了数据库。

要列出集合,它是:

show collections