在 mongodb 集合中导入 json?
Posted
技术标签:
【中文标题】在 mongodb 集合中导入 json?【英文标题】:Import json within mongodb collection? 【发布时间】:2020-04-30 11:15:38 【问题描述】:我想将 MongoDB 集合中的 .json 文件作为字段导入,其中导入的数据基本上可以作为带有字段标签的子文档。这可能吗?我正在使用 Django 进行网络框架和文件上传。
现在 Django 中的数据模型如下所示:
class Trip(models.Model):
name = models.CharField(max_length = 120)
file = models.FileField(upload_to = 'trips/files/', null = True, blank = True)
我希望“文件”字段是一个 .json 导入,将子字段读入文档;例如,在 Mongo 中,数据模型如下所示:
"_id":
"$oid": "5e18e9b0593b827d141e9c6d"
,
"name": "f"
"file":
"field1": "asdf"
"field2": 1234
"field3":
"fieldA": "3"
"fieldB": "876"
“文件”下的字段在导入的 .json 文件中的位置。显然真正的 json 会更复杂,但这只是一个简单的例子。
如果可能,请告诉我,能够导入这些 .json 并在 Mongo 中正确处理它们就是我需要能够运行所需的一切。谢谢!
【问题讨论】:
【参考方案1】:PyMongo 非常有用。它提供了 insert_one()
函数,其工作方式与典型的 mongo 插入相同。查看文档here。
您可能需要一个基于您的模型的函数。您还需要合并 PyMongo 要求才能使用它。
试试这个:
import pymongo
client = pymongo.MongoClient("localhost:27017")
db = client.your_database #Database
col = db.your_collection #Collection
class Trip(models.Model):
name = models.CharField(max_length = 120)
file = models.FileField(upload_to = 'trips/files/', null = True, blank = True)
def insert_into_collection(self):
col.insert_one('uploaded_file':file)
【讨论】:
我不确定这是否是一个愚蠢的问题,但我需要在 models.py 中调用数据库吗?我已经在项目的设置文件中设置了连接。有没有办法引用它而不是打开与 MongoClient() 的连接,或者我是愚蠢的,不明白这应该如何工作?不过还是谢谢,因为这已经在帮助我了。 @frz 您可以改为通过views.py
创建一个连接,将文件插入到 mongo 数据库中。这很可能是一个更简单的解决方案。它大致必须在用户上传文件时起作用,然后将该文件本身保存到数据库中。以上是关于在 mongodb 集合中导入 json?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Robomongo 从 MongoDB 导出 JSON