精华内容
下载资源
问答
  • MongoDB - 连接在本教程我们将讨论 MongoDB 的不同连接方式。启动 MongoDB 服务在前面的教程中,我们已经讨论了如何启动 MongoDB 服务,你只需要在 MongoDB 安装目录的 bin 目录下执行 mongodb 即可。执行启动操作后...

    MongoDB - 连接

    在本教程我们将讨论 MongoDB 的不同连接方式。

    启动 MongoDB 服务

    在前面的教程中,我们已经讨论了如何启动 MongoDB 服务,你只需要在 MongoDB 安装目录的 bin 目录下执行 mongodb 即可。

    执行启动操作后,mongodb 在输出一些必要信息后不会输出任何信息,之后就等待连接的建立,当连接被建立后,就会开始打印日志信息。

    你可以使用 MongoDB shell 来连接 MongoDB 服务器。你也可以使用 PHP 来连接 MongoDB。本教程我们会使用 MongoDB shell 来连接 Mongodb 服务,之后的章节我们将会介绍如何通过php 来连接MongoDB服务。

    标准 URI 连接语法:

    mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]mongodb:// 这是固定的格式,必须要指定。

    username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登录这个数据库

    host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。

    portX 可选的指定端口,如果不填,默认为27017

    /database如果指定username:password@,连接并验证登录指定数据库。若不指定,默认打开 test 数据库。

    ?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开

    标准的连接格式包含了多个选项(options),如下所示:

    选项

    描述

    replicaSet=name

    验证replica set的名称。 Impliesconnect=replicaSet.

    slaveOk=true|false

    true:在connect=direct模式下,驱动会连接第一台机器,即使这台服务器不是主。在connect=replicaSet模式下,驱动会发送所有的写请求到主并且把读取操作分布在其他从服务器。

    false: 在 connect=direct模式下,驱动会自动找寻主服务器. 在connect=replicaSet 模式下,驱动仅仅连接主服务器,并且所有的读写命令都连接到主服务器。

    safe=true|false

    true: 在执行更新操作之后,驱动都会发送getLastError命令来确保更新成功。(还要参考 wtimeoutMS).

    false: 在每次更新之后,驱动不会发送getLastError来确保更新成功。

    w=n

    驱动添加 { w : n } 到getLastError命令. 应用于safe=true。

    wtimeoutMS=ms

    驱动添加 { wtimeout : ms } 到 getlasterror 命令. 应用于 safe=true.

    fsync=true|false

    true: 驱动添加 { fsync : true } 到 getlasterror 命令.应用于 safe=true.

    false: 驱动不会添加到getLastError命令中。

    journal=true|false

    如果设置为 true, 同步到 journal (在提交到数据库前写入到实体中). 应用于 safe=true

    connectTimeoutMS=ms

    可以打开连接的时间。

    socketTimeoutMS=ms

    发送和接受sockets的时间。

    实例

    使用默认端口来连接 MongoDB 的服务。

    mongodb://localhost

    通过 shell 连接 MongoDB 服务:

    $ ./mongo

    MongoDB shell version: 4.0.9

    connecting to: test

    ...

    这时候你返回查看运行 ./mongod 命令的窗口,可以看到是从哪里连接到MongoDB的服务器,您可以看到如下信息:

    ……省略信息……

    2015-09-25T17:22:27.336+0800 I CONTROL [initandlisten] allocator: tcmalloc

    2015-09-25T17:22:27.336+0800 I CONTROL [initandlisten] options: { storage: { dbPath: "/data/db" } }

    2015-09-25T17:22:27.350+0800 I NETWORK [initandlisten] waiting for connections on port 27017

    2015-09-25T17:22:36.012+0800 I NETWORK [initandlisten] connection accepted from 127.0.0.1:37310 #1 (1 connection now open) # 该行表明一个来自本机的连接

    ……省略信息……

    MongoDB 连接命令格式

    使用用户名和密码连接到 MongoDB 服务器,你必须使用 'username:password@hostname/dbname' 格式,'username'为用户名,'password' 为密码。

    使用用户名和密码连接登录到默认数据库:

    $ ./mongo

    MongoDB shell version: 4.0.9

    connecting to: test

    使用用户 admin 使用密码 123456 连接到本地的 MongoDB 服务上。输出结果如下所示:

    > mongodb://admin:123456@localhost/

    ...

    使用用户名和密码连接登录到指定数据库,格式如下:

    mongodb://admin:123456@localhost/test

    更多连接实例

    连接本地数据库服务器,端口是默认的。

    mongodb://localhost

    使用用户名fred,密码foobar登录localhost的admin数据库。

    mongodb://fred:foobar@localhost

    使用用户名fred,密码foobar登录localhost的baz数据库。

    mongodb://fred:foobar@localhost/baz

    连接 replica pair, 服务器1为example1.com服务器2为example2。

    mongodb://example1.com:27017,example2.com:27017

    连接 replica set 三台服务器 (端口 27017, 27018, 和27019):

    mongodb://localhost,localhost:27018,localhost:27019

    连接 replica set 三台服务器, 写入操作应用在主服务器 并且分布查询到从服务器。

    mongodb://host1,host2,host3/?slaveOk=true

    直接连接第一个服务器,无论是replica set一部分或者主服务器或者从服务器。

    mongodb://host1,host2,host3/?connect=direct;slaveOk=true

    当你的连接服务器有优先级,还需要列出所有服务器,你可以使用上述连接方式。

    安全模式连接到localhost:

    mongodb://localhost/?safe=true

    以安全模式连接到replica set,并且等待至少两个复制服务器成功写入,超时时间设置为2秒。

    mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000

    展开全文
  • Mongodb数据库连接1. 首先我们需要 在包中安装 mongodb, 使用命令: npm install mongodb; 在安装包后,我们需要引用该包;如下:var mongo = require('mongodb');在Node.js中,当需要连接Mongodb数据库时,首先需要...

    Mongodb数据库连接

    1. 首先我们需要 在包中安装 mongodb, 使用命令: npm install mongodb; 在安装包后,我们需要引用该包;如下:

    var mongo = require('mongodb');

    在Node.js中,当需要连接Mongodb数据库时,首先需要创建一个Mongodb数据库所在服务器的Server对象,作用是指定需要连接的MongoDB数据库所在的服务器。

    2. 创建Server对象,如下命令:

    var server = new mongo.Server(host, port, [options]);

    参数host: 是指定服务器所在的地址;

    参数port:是指定服务器的端口号。

    options参数值是一个对象,用于指定服务器需要选用的一些选项,具体的包含哪些对象可以自己百度下;这边介绍一下最常用的参数;

    auto_reconnect: 该属性为布尔值,当属性值为true时,在客户端与服务器连接过程中发生错误时自动重建连接,默认为false。

    3. 创建数据库为DB对象;

    在MongoDB服务器对象创建成功后,需要创建一个代表MongoDB数据库的DB对象,创建方法如下:

    var db = new mongo.Db(databaseName, server, [options]);

    databaseName: 该参数是必须的,用于指定需要连接的数据库名;

    server: 用于指定该数据库所在的服务器。

    options为一个对象,参数可选的,具体的参数自己百度,这边介绍一些常用的参数。

    safe: 是一个布尔值,当属性值为true时,使用getLastError命令执行数据的存取操作,该命令返回存取操作的执行结果,默认为false;

    4. 数据库连接

    在Db对象创建后,需要使用对象的open方法执行数据库的链接操作,该方法使用如下所示:

    db.open(callback);

    callback 是一个回调函数,用于指定执行数据库连接操作后返回的回调函数,回调函数指定方法如下:

    function(err, db) {

    }

    在该回调函数中,使用二个参数,第一个参数为链接数据库失败时抛出的错误对象,第二个参数为一个Db对象,代表链接成功的数据库,当数据库连接失败时,该参数值为null;

    5. 关闭数据库

    当一个数据库不再需要使用时候,可以使用数据库对象的close方法关闭数据库,该方法如下所示:

    db.close([forceClose], [callback]);

    forceClose 参数值为一个布尔值,当该参数值为true时,强制关闭该数据库,关闭数据库后,不可再使用open方法打开该数据库。

    当参数值为false,不强制关闭该数据库,可以使用该数据库对象的open方法打开该数据库。

    callback 为一个函数,用于指定关闭数据库连接操作后返回的回调函数。该回调函数指定如下所示:

    function (err) {}

    该回调函数有一个参数值,表示的是为链接数据库失败时抛出的错误对象。

    6. 监听数据库的close事件

    当数据库关闭时,触发数据库的对象的close事件,可以通过监听数据库对象的close事件并指定回调函数的方法指定当关闭数据库操作执行结束时

    所需要执行的处理,如下代码:

    function(err, db) {}

    该回调有2个参数,第一个参数为关闭数据库失败时抛出的错误对象,第二个参数值为成功关闭的数据库对象,当关闭数据库失败时该参数值为null.

    下面是链接数据库的简单demo,代码如下:

    package.json 代码如下:

    {"name": "mdb","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"author": "","license": "ISC","dependencies": {"mongodb": "^2.2.33"}

    }

    在项目中的根目录下新建一个 app.js, 代码如下:

    const mongo = require('mongodb');

    const Server=mongo.Server;

    const Db=mongo.Db;

    const server= new Server('localhost', '27017', { auto_reconnect: true});

    const db= new Db('dataDb', server, { safe: true});

    db.open(function(err, db) {if(err) {throwerr;

    }else{

    console.log('成功建立数据库连接');

    db.close();

    }

    });

    db.on('close', function(err, db) {if(err) {throwerr;

    }else{

    console.log('成功关闭数据库连接');

    }

    });

    然后在项目根目录下 执行 node app.js, 如下图所示:

    注意:在安装 mongodb时候,一定是需要是 2.2.33版本的mongodb, 如果我们默认使用 npm install mongodb的话,会默认安装 ^3.0.10

    这个版本的,会导致数据库连接失败;如下图所示:

    展开全文
  • 最近在学习node,所以听说node和mongodb更配哦。。所以我就来学习mongodb了一、mongodb的开启和关闭1. 查找mongod是否可用which mongod2. 启动mongodb指定path 和log日志mongod --dbpath /data2/db --port=27017 --...

    最近在学习node,所以听说node和mongodb更配哦。。所以我就来学习mongodb了

    一、mongodb的开启和关闭

    1. 查找mongod是否可用

    which mongod

    2. 启动mongodb

    指定path 和log日志

    mongod --dbpath /data2/db --port=27017 --fork /data2/db/log/mongod.log

    3. 关闭数据库

    mongod --shutdown

    二、mongodb的操作

    1. 连接服务器

    mongod 115.29.137.34:27017

    2. 使用数据库

    (不存在的数据库也可以使用,插入数据之后会自动保存)

    use mydb

    3. 权限登陆

    db.auth('username','password')

    4. 展示数据库列表

    show dbs

    5. 插入数据

    (类似于mysql的表)

    db.users.insert({'name':'xiaomo'})

    db.users.insert({'name':'xiaoming','age':25})

    db.users.insert({'name':'xiaoming','age':24,'sex':'女'})

    6. 查询集合

    (前提是use了一个数据库)

    有一个System.indexes 是索引

    show collections

    7. 不带条件查询

    db.users.find()

    8. 带条件查询

    (参数是一个对象)

    db.users.find({'name':'xiaomo'})

    9. 更新数据

    (有三个参数,1:查询条件,2:更新的内容 3:更新的配置)

    db.users.update({'name':'xiaomo',{$set:{'name:'xm}}) 修改满足条件的第一条数据

    db.users.update({'name':'xiaomo',{$set:{'name:'xm}},{multi:true}) 修改所有满足条件的数据

    10. 保存数据

    (只有一个参数,必须要传id,后面是要修改的数据)

    db.users.save({'id':'objectId(574710a97a3afd63cde56a49)','age':30})

    11. 删除数据

    (1:条件 2 是否删除所有符合条件的)

    db.users.remove({'name':'xiaomoing'},true)

    12. 删除集合

    db.users.drop()

    三、使用mongoose操作数据库

    1. 模块的介绍

    连接mongdodb的驱动

    2. 配置和链接

    npm install --save mongoose

    var mongoose = require('mongoose');

    var uri = 'mongodb://xiaomo:xiaomo@115.29.137.34:27017/admin';

    mongoose.connect(uri);

    3. Model 和Shema

    // model.js

    var Schema = mongoose.Schema,

    ObjectId = Schema.ObjectId;

    var BlogPost = new Schema({

    author : ObjectId,

    title : String,

    body : String,

    date : Date

    });

    //Model

    mongoose.model('blog',Schema);

    var Comment = new Schema({

    name: { type: String, default: 'hahaha' },

    age: { type: Number, min: 18, index: true },

    bio: { type: String, match: /[a-z]/ },

    date: { type: Date, default: Date.now }

    });

    // a setter

    Comment.path('name').set(function (v) {

    return capitalize(v);

    });

    // middleware

    Comment.pre('save', function (next) {

    notify(this.get('email'));

    next();

    });

    4. 创建文档

    //insert.js

    var mongoose = require('mongoose');

    require('./model.js'); //执行

    var Blog = mongoose.model('blog');

    var blog = new Blog({

    name:'xiaomo',

    age:25,

    bio:'don't know',

    date:new Date

    });

    book.save(function(err){

    console.log('save status:'+err);

    });

    5. 删除文档

    var mongoose = require('mongoose');

    require('./model.js');

    var Blog = mongoose.model('blog');

    Blog.findOne({'name':'xiaomo'},function(err,doc){

    if(err){

    console.log(err)

    return;

    }

    if(doc){

    doc.reomove();

    }

    })

    6. 简单查询

    var mongoose = require('mongoose');

    require('./model.js');

    var Blog = mongoose.model('blog');

    Blog.find({},function(err,doc){

    if(err){

    console.log(err)

    return;

    }

    console.log('result',doc)

    })

    第一个满足条件的结果

    var mongoose = require('mongoose');

    require('./model.js');

    var Blog = mongoose.model('blog');

    Blog.findOne({'name':'xiaomo'},function(err,doc){

    if(err){

    console.log(err)

    return;

    }

    console.log('result',doc)

    })

    7. 条件语句

    // condation.js

    var mongoose = require('mongoose');

    require('./model.js');

    var Blog = mongoose.model('blog');

    //名字是xiaomo或者xiaoming 可以用$or和$and

    var condation = {

    $or $and:[

    {'name':'xiaomo'},

    {'name':'xiaoming'}

    ]

    }

    Blog.find(condation,function(err,doc){

    if(err){

    console.log(err)

    return;

    }

    console.log('result',doc)

    })

    三、在项目中使用mongoose

    1. 生成项目

    koa koatest -e koatest

    2. 安装依赖

    cd koatest && npm install

    3. 安装mongoose

    npm install --save mongoose

    4. 创建模型

    // models/users.server.model.js

    var mongoose = require('mongoose');

    var UserSchema = new mongoose.Schema({

    uid:Number,

    username:String,

    createTime:Date,

    lastLogin:Date

    })

    module.exports = mongoose.model('User',UserSchema);

    5. 创建配置文件

    // config/config.js

    module.exports={

    mongodb:'mongodb://xiaomo:xiaomo@115.29.137.34:27017/admin'

    }

    //config/mongoose.js

    var mongoose = require('mongoose');

    var config = require('./config.js');

    module.exports=function(){

    var db = mongoose.connect(config.mongodb);

    require('./../models/users.server.model.js');

    return db;

    }

    6. 操作mongdodb 代码

    //routers/users.js

    var router = require('koa-router')();

    var mongoose = require('mongoose');

    var User = mongoose.model('User');

    router.get('/', function *(next) {

    //add

    var user = new User({

    uid:

    })

    this.body = yield User.find({});

    });

    module.exports = router;

    展开全文
  • 一:使用 mongod 命令关闭[mongod@localhost journal]# mongod --shutdown -f /etc/mongodb.confkilling process with pid: 17234备注:mongod 命令的 shutdown 选项能干净的关闭 MongoDB 服务。二:登录到admin库,...

    一:使用 mongod 命令关闭

    [mongod@localhost journal]# mongod --shutdown -f /etc/mongodb.conf

    killing process with pid: 17234

    备注:mongod 命令的 shutdown 选项能干净的关闭 MongoDB 服务。

    二:登录到admin库,然后执行db.shutdown()

    /usr/bin/mongo --port=27017 --host=10.1.82.6 --username=root --password=root --authenticationDatabase admin

    use admin

    db.shutdownServer();

    三:使用 kill 命令

    查看 mongo 相关进程

    [mongod@localhost journal]# ps -ef | grep mongo

    root 17573 14213 0 05:10 pts/1 00:00:00 su - mongo

    mongo 17574 17573 0 05:10 pts/1 00:00:00 -bash

    mongo 18288 1 0 06:12 ? 00:00:00 mongod -f /database/mongodb/data/mongodb_27017.conf

    mongo 18300 17574 6 06:13 pts/1 00:00:00 ps -ef

    mongo 18301 17574 0 06:13 pts/1 00:00:00 grep mongo

    kill mongo 服务进程

    [mongod@localhost journal]# kill 18288

    [mongod@localhost journal]# ps -ef | grep pmon

    mongo 18304 17574 0 06:13 pts/1 00:00:00 grep pmon

    备注:可以使用操作系统的 kill 命令,给 mongod 进程发送 SIGINT 或 SIGTERM 信号,

    即 "kill -2 PID," 或者 “kill -15 PID“。

    建议不要使用 ”kill -9 pid“,因为如果 MongoDB 运行在没开启日志(--journal)的情况下,

    可能会造成数据损失。

    展开全文
  • mongodb连接数据库关闭数据库连接的方法:1、首先我们需要 在包中安装 mongodb, 使用命令: npm install mongodb; 在安装包后,我们需要引用该包;如下:varmongo=require('mongodb');在Node.js中,当需要连接...
  • mongo shell安装好以后,就需要通过mongo shell来连接对应的远程mongodb数据库了,看下面的这个示例:mongo "mongodb://cluster0-shard-00-00-jxeqq.mongodb.net:27017,cluster0-shard-00-01-jxeqq.mongodb.net:...
  • In so many introductory examples of using MongoDB, you see code like this:var MongoClient = require('mongodb').MongoClient;MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db){/...
  • 创建Mongodb数据库由于Mongodb不是关系型数据库文件,实际上,它并不存在传统关系型数据库中的所谓“数据库”的概念,但不用担心,当你第一次新增数据时,mongodb就会以collection集合的形式进行保存和新建,而不...
  • 这是知识体系不完善的填坑文章,将HTTP的系列知识总结在这里,比单独背零散的知识上增加一些串联的逻辑字段的含义:请求建立连接 SYN确认号是否有效,一般置为1 ACK希望断开连接 FIN三次握手第一次握手:建立连接时...
  • realguess提出了一个问题:When to close MongoDB database connection in Nodejs,或许与您遇到的问题类似。回答者mpobrien给出了该问题的处理方式:Here's a potential solution based on the counting approach ...
  • MongoDB 提供几种关闭服务的命令,具体为以下:一 使用 Crtl+C 关闭[mongo@redhatB data]$ mongod --dbpath=/database/mongodb/data/ --logpath=/var/applog/mongo_log/mongo.log --logappend --port=27017 --...
  • 我使用mongodb作为后端数据库.我有一个名为MongoConnection的基类,它使用pymongo层与mongodb进行通信.我对这个层非常好,因为它为我分离了业务层的数据库.我的自定义MongoConnenction类如下: –#!/usr/bin/env ...
  • 导读关键词:BIRT MongoDB JDBC MongoDB 不同于 Oracle,MYSQL 这些关系数据库,没有提供 JDBC 连接,查询语言也不是 SQL 了,换成了一套有些复杂的脚本语言。 BIRT 里怎么连 MongoDB 呢,通常是这两种方式: 1、 ...
  • 感谢关注MongoDB于4月8日举办的在线研讨会“如何从关系型数据库迁移到MongoDB”,欢迎观看视频回放。扫码观看您也在复制本链接至浏览器打开:...
  • <p>I connect to mongodb with php's driver and make a map-reduce command. Sometimes the mapreduce takes a long time and this is not a problem for me, at least for now. <p>The problem is that when I ...
  • mongoDB 学习

    2020-10-17 15:37:38
    MongoDB 数据库一般只需要连接一次,连接一次后,除非项目停止服务器关闭否则数据库不能断开 其他的关系型数据库需要每操作一次就要连接一次 安装 mongoDB 去官网下载,我安装的是社区版,安装一路无脑 next ...
  • MongoDB c++驱动里,建立与数据库的连接后,需不需要断开连接,API函数是哪个? 查询和插入,bson结构很是麻烦,应该怎么处理结果
  • mongoDB操作

    2018-07-07 09:59:14
    MongoDB基本操作 创建数据库:use 数据库名: 如果数据库不存在,就创建,否则切换到数据库,对于刚刚创建的数据库,可能不在列表中进行显示,如果需要显示,需要插入一些数据; 查看数据库: show dbs * 查看当前正在...
  • 最近用koa写后端接口,放服务器用forever守护进程, 中间服务器断开网络重连之后, 接口一直报错topology was destoryed 查看了网上各种解决方式都没有解决我的问题。 尝试换个端口,发现好了, 运行 sudo ...
  • --摘录:MongoDB非正常关闭后修复记录mongod没有后台执行,在终端连接非正常断开后,再次执行mongod报错,如下所示:[root@localhost mongodb]# ./bin/mongod ./bin/mongod --help for help an...
  • 不仅速度很慢(2.3万条数据写入时间15min),而且总数据6万条数据总是跑到2.3w的时候,mongodb的服务就会断掉,直接跳出下记断开链接代码! 把jar包达到linux上运行也是如此。 很疑惑,求解! ``` 2019-01-...
  • MongoDB 中的副本集是一组mongod进程,它们维护相同的数据集。副本集提供冗余和高可用性,并且是所有生产部署的基础。通过在不同数据库服务器上提供多个数据副本,复制集可以保证对一定数量的数据库服务断开级别容错...
  • MongoDB常用命令

    2020-08-16 17:35:03
    目录一、操作MongoDB数据库1、创建数据库2、查看所有数据库3、查看当前正在使用的数据库4、断开连接5、查看命令api6、删除数据库二、集合操作1、查看当前数据库下有哪些集合2、创建集合3、删除当前数据库中的集合4....
  • 一、操作mongodb数据库 1、创建数据库 语法:use 数据库名 注意:切换到指定的数据库,如果数据不存在则创建数据 2、查看所有数据库 show dbs 3、查看正在使用的数据库 a、db b、db.getName() 4、断开shell...
  • mongoDB的Journaling日志功能与常见的log日志是不一样的,mongoDB也有log日志,它只是简单记录了数据库在服务器上的启动信息、慢查询记录、数据库异常信息、客户端与数据库服务器连接、断开等信息。Journaling日志...
  • <bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean"> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> 这是我的配置文件...
  • Node与Mongodb实战

    2016-08-03 22:21:03
    在听陈鸿宇的《理想三旬》。好听~上两篇博文中提到了在Mac下Mongodb的安装与连接,...一:安装MongoDB包使用Node中的mongodb模块,需要先安装哦~打开终端,输入如下命令~npm install mongodb二:数据库连接与断开...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 138
精华内容 55
关键字:

mongodb断开