Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Mongoose将json导入MongoDB_Json_Node.js_Mongodb_Mongoose - Fatal编程技术网

如何使用Mongoose将json导入MongoDB

如何使用Mongoose将json导入MongoDB,json,node.js,mongodb,mongoose,Json,Node.js,Mongodb,Mongoose,我在这方面有一些问题,这使得它很棘手,所以 我使用的是Mongoose和MongoLab,我可以很好地存储和检索数据,但我需要一个系统,允许我对数据库进行基本种子处理 我已经为集合创建了模式,但是没有运行任何模式,因为没有数据,所以我似乎无法运行正常的mongoimport,因为集合尚未创建 我想向我的节点服务器添加一些东西,这样,如果集合不存在或为空,它将为集合加载一个模式,然后为种子数据插入json 所以我有这个 var Club = require('./schemas/Club');

我在这方面有一些问题,这使得它很棘手,所以

我使用的是Mongoose和MongoLab,我可以很好地存储和检索数据,但我需要一个系统,允许我对数据库进行基本种子处理

我已经为集合创建了模式,但是没有运行任何模式,因为没有数据,所以我似乎无法运行正常的mongoimport,因为集合尚未创建

我想向我的节点服务器添加一些东西,这样,如果集合不存在或为空,它将为集合加载一个模式,然后为种子数据插入json

所以我有这个

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