如何使用 Mongoose 将 json 导入 MongoDB

2024-01-10

我对此有一些问题,这使得它变得棘手,所以......

我正在使用 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');
});

另外,要考虑到,如果我想创建两个集合,并且当它为第一个集合中的项目生成 ObjectId() 时,我可以想象想要使用第二个集合中的项目作为引用。

假设 Club 对象目前只有一个字符串属性。

// contents of data/club.json
[
  { 'name' : 'Barcelona' },
  { 'name' : 'Real Madrid' },
  { 'name' : 'Valencia' }
]

非常感谢任何帮助


如果我理解得很好,您只需将 JSON 文档从 Mongoose 上传到您的 MongoDB 集合即可。鉴于您的模型被命名为Club,您可以通过访问原始驱动程序方法Club.collection。并使用insertMany http://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#insertMany实现你想要的。

这是一个独立的示例(有趣的东西在最后):

> var mongoose = require('mongoose')
> var assert = require('assert')

> mongoose.connect('mongodb://localhost/test');

> var Schema = mongoose.Schema
> var clubSchema = new Schema({
...   name: String,
... })

> var Club = mongoose.model('Club', clubSchema)

// Now, the interesting part:
> data = [
...   { 'name' : 'Barcelona' },
...   { 'name' : 'Real Madrid' },
...   { 'name' : 'Valencia' }
... ]
> Club.collection.insertMany(data, function(err,r) {
...       assert.equal(null, err);
...       assert.equal(3, r.insertedCount);
... 
...       db.close();
... })

并从 Mongo Shell 检查:

> db.clubs.find()
{ "_id" : ObjectId("5574b464b680174d79e37601"), "name" : "Barcelona" }
{ "_id" : ObjectId("5574b464b680174d79e37602"), "name" : "Real Madrid" }
{ "_id" : ObjectId("5574b464b680174d79e37603"), "name" : "Valencia" }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Mongoose 将 json 导入 MongoDB 的相关文章

随机推荐

  • aspnet core 中的部分视图发布子模型?

    我有一个视图 其中包含包含各种不同部分的选项卡 我将每个选项卡实现为部分视图 有一个 ViewModel 它具有各种子类来填充选项卡中的视图和部分视图 FormCaptureViewModel FormDetailViewModel For
  • C++链接器会自动内联函数(没有“inline”关键字,没有在标头中实现)吗?

    C 链接器是否会自动内联 传递 函数 这些函数未在标头中定义 并且未明确请求通过inline关键词 例如 发生以下情况so often 并且应该always受益于 内联 似乎每个编译器供应商都应该通过链接器通过 内联 自动 处理它 在可能的
  • Blazor 客户端应用程序级别异常处理

    如何全局处理客户端 Blazor 应用程序的应用程序级别异常 您可以创建一个处理 WriteLine 事件的单例服务 这只会在错误时被触发 这要归功于Console SetError this public class ExceptionN
  • liquibase - 变更集的执行顺序

    据我了解 Liquibase 根据更改日志中写入的顺序执行更改集 我希望变更集以另一个顺序运行 有没有办法改变变更集的执行顺序 如果能及时回复我的问题 我将不胜感激 Liquibase 中变更日志的顺序是根据需要部署 执行 更改的顺序 Li
  • 在 django-rest-framework-jwt 中存储超过默认信息

    我正在使用 Django 版本 1 8 并使用 django rest framework jwt 进行身份验证 身份验证后 我们的应用程序将返回前端信息 from rest framework jwt settings import ap
  • 如何将 uuid 添加到 log4j 以登录文件?

    我有这个 log4j2 xml 文件
  • 如何将本地文件上传到Carrierwave模型?

    我使用 Carrierwave 来处理图像上传 但我没有使用表单 而是使用服务器中的本地文件 我怎样才能做到这一点 user User first image path tmp pic s7b28 jpg user image image
  • chrono::month 和 chrono::months 之间有什么区别

    C 20 chrono 类型 值之间有什么区别month 7 and months 7 有两个如此相似的名字是不是很混乱 是的 两者兼而有之可能会令人困惑month and months当第一次遇到这个库时 然而 该库中有一致的命名约定 有
  • python中while循环的多个条件

    我遇到了问题 包括多个语句while在Python中循环 它在单个条件下工作得很好 但是当我包含多个条件时 循环不会终止 我在这里做错了什么吗 name raw input Please enter a word in the senten
  • 使用 mongodb java 驱动程序运行本机 mongodb 查询

    我想用java执行CRUD操作updateOne updateMany or deleteMany 等等 但是当我想与像这样的运算符一起运行时 set unset我必须导入新课程 例如Updates或创建嵌套Document对象 我想插入原
  • JAXB xjc:如果值为空,如何生成返回空的字符串代码?

    给出以下示例 xsd 片段 lt xs attribute name SEGMENT default use optional type xs string gt 当 xjc 生成包含以下内容的类时SEGMENTbean 属性 以下 get
  • 静态字符串中的非固定宽度文本 - Jasper Reports

    正如我从这篇文章以来了解到的那样 如何在 Jasper Reports 中相对于数据宽度拉伸文本字段 https stackoverflow com questions 8979134 how to stretch field horizo
  • 如何通过java打开现有文件,如.docx、.txt、.pptx?

    我想知道如何通过java打开文件 我可以像这样打开 Office 本身 try Runtime runTime Runtime getRuntime Process process runTime exec C Program Files
  • Material-UI Menu 组件仅触发最后一个 MenuItem onClick 操作

    最近我尝试使用 MaterialUI 4 3 3 的 Menu 和 MenuItem 组件实现一个简单的下拉菜单 MenuItem 上的 onclick 事件行为不正确 什么时候console log id 被调用时 每个组件都会回显示例数
  • 在 HIghcharts 中设置自定义图例项目符号(或图标)

    我正在尝试将默认的 highcharts 图例符号更改为我自己的自定义符号 我希望图例标签旁边有一个字体很棒的图标 为此 我考虑了 labelformatter labelFormatter function var on
  • std::shared_ptrs 的自定义删除器

    创建后是否可以使用自定义删除器std shared ptr不使用new 我的问题是对象创建是由工厂类处理的 并且它的构造函数和析构函数受到保护 这会产生编译错误 我不想使用new因为它的缺点 详细说明 我更喜欢创建这样的共享指针 它不允许您
  • FluentValidation 一个属性出现多个错误消息

    我正在使用 FluentValidation 验证输入值 我正在使用一种方法来验证数据库中的值 该方法根据值返回不同错误消息的整数值 1 2 和 3 如何根据方法的返回值显示错误消息 我在类作用域中创建了一个变量并设置了返回值 在下一条语句
  • 基于目录的环境变量范围-如何实现?

    我有一组工具 需要根据我正在处理的项目传递参数 我希望能够根据当前目录自动设置几个环境变量 因此 当我在目录之间切换时 我常用的环境变量也会改变 例子 让我们当前目录是 foo 因此如果我这样做 foo myscript var1 VAR1
  • Java SE 可以减少 CDI 吗?

    JSR 330 依赖注入可以应用于 Java SE 和 Java EE 环境 而 JSR 299 的标题是 Java EE 平台的上下文和依赖注入 除了严格面向 Java EE 的功能之外 哪些 CDI 功能对 Java SE 也有意义 有
  • 如何使用 Mongoose 将 json 导入 MongoDB

    我对此有一些问题 这使得它变得棘手 所以 我正在使用 Mongoose 和 MongoLab 我可以很好地存储和检索数据 但我想要一个允许我做数据库基础种子的系统 我为集合创建了模式 但没有运行 因为没有数据 所以我似乎无法运行正常的 mo