如何使用Mongoose将json导入MongoDB
我在这方面有一些问题,这使得它很棘手,所以 我使用的是Mongoose和MongoLab,我可以很好地存储和检索数据,但我需要一个系统,允许我对数据库进行基本种子处理 我已经为集合创建了模式,但是没有运行任何模式,因为没有数据,所以我似乎无法运行正常的mongoimport,因为集合尚未创建 我想向我的节点服务器添加一些东西,这样,如果集合不存在或为空,它将为集合加载一个模式,然后为种子数据插入json 所以我有这个如何使用Mongoose将json导入MongoDB,json,node.js,mongodb,mongoose,Json,Node.js,Mongodb,Mongoose,我在这方面有一些问题,这使得它很棘手,所以 我使用的是Mongoose和MongoLab,我可以很好地存储和检索数据,但我需要一个系统,允许我对数据库进行基本种子处理 我已经为集合创建了模式,但是没有运行任何模式,因为没有数据,所以我似乎无法运行正常的mongoimport,因为集合尚未创建 我想向我的节点服务器添加一些东西,这样,如果集合不存在或为空,它将为集合加载一个模式,然后为种子数据插入json 所以我有这个 var Club = require('./schemas/Club');
var Club = require('./schemas/Club');
我通常使用Club.find或Club.save等,这很好
我只想对需要创建的Club集合的对象数组执行保存
我确实研究过mongoose fixture,但它已经多年没有更新了,可能有一种方法可以做到这一点,而不需要太多额外的代码,因为我已经定义了模式,并准备好了json数组
当我想进行检查和导入时,这是我列出的成功事件
mongoose.connection.on('open', function () {
console.log('mongoose.connection.opened');
});
也要考虑,如果我想创建两个集合,并且当它为第一个集合中的项生成Objutter()时,我可以想象要使用第二个集合中的对象作为参考文献
。 假设俱乐部对象目前只有一个字符串属性// contents of data/club.json
[
{ 'name' : 'Barcelona' },
{ 'name' : 'Real Madrid' },
{ 'name' : 'Valencia' }
]
非常感谢您的任何帮助如果我理解得很好,您所需要的只是从Mongoose向您的MongoDB集合上传一个JSON文档。鉴于您的车型名为
Club
,您可以通过Club.collection
访问原始驱动程序方法。并用它来实现你想要的
下面是一个独立的示例(有趣的内容在结尾):
并从Mongo Shell中检查:
> db.clubs.find()
{ "_id" : ObjectId("5574b464b680174d79e37601"), "name" : "Barcelona" }
{ "_id" : ObjectId("5574b464b680174d79e37602"), "name" : "Real Madrid" }
{ "_id" : ObjectId("5574b464b680174d79e37603"), "name" : "Valencia" }
有时,shell脚本可能会有所帮助:
for filename in *; do mongoimport -d mydb -c $filename --jsonArray done
另请参见:我们使用mongoimport时遇到的问题是,我们只通过mongoose适配器验证数据,而这就绕过了它。因此,我们必须检查json中的所有字段是否具有正确的格式等,或者将验证构建到我们的mongodb模式中。该注释对您的情况没有帮助(
for filename in *; do mongoimport -d mydb -c $filename --jsonArray done