Данные Pymon go, сохраненные приложением, недоступны в оболочке mon go - PullRequest
0 голосов
/ 11 июля 2020

Я создаю приложение flask, используя pymon go. В моем python скрипте данные сохраняются с помощью .save (), как и должно, и могут быть получены с помощью .find () по мере необходимости, и они также сохраняются, если я перезапускаю приложение. Однако, если я проверю базу данных mon go с другого терминала или с того же терминала после остановки приложения, данных там нет. Чтобы убедиться, что я правильно использую pymon go, я скопировал и вставил этот базовый c скрипт с сайта 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()
>

Либо коллекции не сохраняются на сервере mon go, к которому я пытаюсь подключиться, либо они просто не отображаются в оболочке по какой-то причине. Вот мой файл /etc/mongod.config: (закомментированные строки удалены, поэтому stackoverflow не форматирует его как разметку)

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

, и я не уверен, актуальны ли они, но всегда были предупреждения о запуске когда я вхожу в оболочку mon go:

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))

1 Ответ

0 голосов
/ 11 июля 2020

Требуемый синтаксис :

db.customers.find()

в оболочке. Вы уже указали базу данных с помощью команды use.

Чтобы перечислить коллекции, это:

show collections
...