一、 在Node中如何操作 MongoDB数据
   1.使用官方的 mongodb 来操作:https://github.com/mongodb/node-mongodb-native
   2.使用第三方库 mongoose:https://mongoosejs.com/
   3.安装:

 npm i mongoose

  4. 引入需要的包

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true});
mongoose.Promise = global.Promise;
var Cat = mongoose.model('Cat', { name: String });
for (var i = 0; i < 10; i++) {
var kitty = new Cat({ name: 'Zildjian' });
kitty.save(function (err) {
if(err) {
console.log(err)
} else {
console.log('meow')
}
});
}

二、 MongoDB 数据库的基本概念
    1. 可以有多个数据库  (MySQL叫表,,这里叫集合)
    2 一个集合中可以有多个文档(表记录)
    3. 文档结构很灵活,没有任何限制
    4. MongoDB 非常灵活,不需要像 MySql 一样先创建数据库、表、设计表结构
       5. 在这里只需要:当你需要插入数据的时候,只需要指定哪个数据库的哪个集合操作就可以
       6. 一切都由MongoDB来帮你自动完成建库建表这件事
 三、官方指南
   1. 设计Schema 发布Model

var mongoose = require('mongoose')
var Schema = mongoose.Schema

   2. 连接 MongoDB 数据库,localhost代表本机数据库,

// test是数据库的名字,它可以是还未存在的
        // 当你插入第一条数据之后就会被自动创建出来
   

mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true});

  3..设计集合结构(表结构)

    // 字段名称就是表结构中的属性名称
    // 约束的目的是为了保证数据的完整性,不要有脏数据

var userSchema = new Schema({
username: {
type: String,
require: true // 必须有
},
password: {
type: String,
require: true
},
email: {
type: String
}
});

  4. 将文档结构发布为模型

//     mongoose.model 方法就是用来将一个架构发布为 model
        //  第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称
   //  mongoose 会自动将大写名词的字符串生成 小写复数 的集合名
   //  例如这里的User最终会变为users集合名称
   //  第二个参数:架构 Schema
   // 返回值:,模型构造函数

 var User = mongoose.model('User', userSchema)

  5. 当我们有了模型构造函数之后,就可以使用这个构造函数对users集合中的数进行操作(增删改查)

   增加数据

var admin = new User({
username: 'admin',
password: '123456',
email: '2352404495@qq.com'
})
admin.save(function (err, ret) {
if (err) {
console.log('保存失败')
} else {
console.log('保存成功')
console.log(ret)
}
})

   查询:
      查全部:

`User.find(function (err, ret) {
if (err) {
console.log('failed')
} else {
console.log(ret)
}
})`
+ 按条件查一个,条件可以有多个:
`User.findOne({
username: 'chenxiao'
}, function (err, ret) {
if (err) {
console.log('failed')
} else {
console.log(ret)
}
})` //返回的是对象,如果把findOne换成find则会返回数组

    无条件查询一个,结果是第一条:

User.findOne(function (err, ret) {
if (err) {
console.log('failed')
} else {
console.log(ret)
}
})

   删除数据

User.remove({
username: 'admin'
}, function (err, ret) {
if (err) {
console.log('删除失败')
} else {
console.log('success')
console.log(ret)
}
})

     更新数据

User.findByIdAndUpdate('5ca44683632b0b27c8dacf0c', {
password: '154822'
}, function (err, ret) {
if (err) {
console.log('failed');
} else {
console.log('success');
}
})

MongoDB基本增删改查的更多相关文章

  1. Java连接MongoDB进行增删改查

    1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...

  2. MongoDB的增删改查 转

    MongoDB的增删改查 (黎明你好原创作品,转载请注明) MongoDB中数据的基本单元叫做文档,采用json的键-值的方式.多个键及其关联的值有序的存放在一起变是文档.类似于编程语言中的键值关系. ...

  3. Java实现mongodb原生增删改查语句

    Java实现mongodb原生增删改查语句 2018-03-16 自动化测试时,需校验数据库数据,为了快速自动化,在代码中用原生增删改查语句操作mongodb 结构 代码 0 pom.xml < ...

  4. Scala对MongoDB的增删改查操作

    =========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...

  5. C# 对MongoDB 进行增删改查的简单操作

    C# 对MongoDB 进行增删改查的简单操作   下面演示下C#操作MongoDB驱动的简单的增删改查代码 运用到的MongoDB支持的C#驱动,当前版本为1.6.0 1,连接数据库   /// & ...

  6. python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查

    python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...

  7. python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)

    一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...

  8. 2,MongoDB之增删改查及pymongo的使用

    本章我们来学习一下关于 MongoDB的增删改查 一.MongoDB操作 之 原生ORM,根本不存在SQL语句 创建数据库:这里和一般的关系型数据库一样,都要先建立一个自己的数据库空间 是的,Mong ...

  9. SpringBoot操作MongoDB实现增删改查

    本篇博客主讲如何使用SpringBoot操作MongoDB. SpringBoot操作MongoDB实现增删改查 (1)pom.xml引入依赖 <dependency> <group ...

  10. MongoDB之增删改查(一)

    本文主要介绍MongoDB数据库增删改查操作. 增 mongoDB和其它关系型数据库一样,通过insert来添加数据到集合中去. db.collectionName.insert(内容) 显示数据库中 ...

随机推荐

  1. ng2-table

    [转]https://github.com/valor-software/ng2-table  demo:http://valor-software.com/ng2-table/ ng2-table ...

  2. Windebug调试

    .loadby SOS clr .Symfix .reload !threads !printexception [address]

  3. drawrect&layoutsubviews

    drawrect触发方法: 设置frame setneeddisplay contentmode设置为redraw sizetofit layoutsubviews触发方法 setframe layo ...

  4. @Value("${xxxx}")注解的配置及使用

    代码中的用法 Spring 通过@Value注解获取*.porperties文件code的内容,然后赋值给使用该注解的Code属性上. @Value("${code}") priv ...

  5. selenium启动Firefox失败

    今天搭建java+selenium环境,搭建几次都失败,总结一下原因 1. selenium启动Firefox,不需要额外的driver 2. Friefox如果没有安装到默认路径C盘,代码中需要修改 ...

  6. python tkinter Label

    """小白随笔,大佬勿喷""" #Label标签 用于可显示文本或图片,不可编辑 import tkinter as tk #初始化窗口 w ...

  7. spring 事务注解

    在spring中使用事务需要遵守一些规范和了解一些坑点,别想当然.列举一下一些注意点. 在需要事务管理的地方加@Transactional 注解.@Transactional 注解可以被应用于接口定义 ...

  8. npm 发布一个全局的指令

    我们经常使用 npm i  -g  xxxx 安装完成一个包之后,就能直接使用对应的指令.例如安装  vue-cli 或者 express 等 那么下面我们自己做一个类似的效果: 首先要对 npm 发 ...

  9. python 中为什么不需要重载 参数*arg和**args

    函数重载主要是为了解决两个问题. (1)可变参数类型. (2) 可变参数个数. 另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两 ...

  10. 第九篇——Struts2的拦截器

    拦截器: Struts2大多数核心功能都是通过拦截器实现的,每个拦截器完成某项功能: 拦截器方法在Action执行之前或之后执行. 工作原理: 拦截器的执行过程是一个递归的过程 action请求--& ...