MongoDB使用经验总结

简介: MongoDB使用经验总结


摘要:


  

最近在开发项目使用了数据库MongoDB,我将它的使用方法整理下分享给大家。至于mongoDB有什么优点,大家可以到官网去看。


安装:


  

首先我们需要到官网下载适合自己系统的mongodb。


windows:


  

你可以在命令窗口中输入下面命令来查看自己的系统参数,选择对应的版本

wmic os get osarchitecture


如果你下载的是zip文件,只需要按照下面的步骤来就可以安装了:


1、将下载的文件解压缩到自己想要安装的目录,比如:D:\test\。将解压的文件夹名改成mongodb,在mongodb文件里面包含bin文件等。


2、创建数据和日志仓库,新建文件夹D:\test\mongodb\data\db和D:\test\mongodb\data\log,在log文件夹下新建一个日志文件MongoDB.log。


3、设置数据仓库路径并启动,MongoDB默认的数据仓库是\data\db,我们需要更改为自己设置的路径,在命令提示窗内输入


>d:

d:>cd D:\test\mongodb\bin

D:\test\mongodb\bin>mongod --dbpath "D:\test\mongodb\data"


如果控制台看到类似的信息就说明安装成功了


image.png


注意:关闭该窗口就关闭了mongodb的服务,如果你想关闭服务可以使用Ctrl+c来关闭。


4、测试连接,重新打开一个命令窗口,进入到上面的目录下,然后输入mongo或者mongo.exe当出现下面信息时说明测试通过,此时我们已经进入了mongo的默认数据库test这个数据库。


image.png

5、上面提到关闭窗口mongo的服务就被关闭了,这样的话每次我们需要mongoDB服务时都要开启mongod.exe程序,比较麻烦。我们可以将mongo设置为windows的默认服务。


在mongodb的bin目录下执行下面命令


mongod --dbpath "D:\test\mongodb\data\db" --logpath "D:\test\mongodb\data\log\MongoDB.log" --install --serviceName "MongoDB"


参数详解:


–install : 安装

–remove : 移除

–serviceName <name> : 服务名称

–serviceDisplayName <display-name> : 服务列表显示名称

–serviceDescription  <description> : 服务描述

 

设置好之后只需要执行下面命令就可以启动mongoDB


NET START MongoDB


6、关闭和删除

关闭:

net stop MongoDB

删除:

sc.exe delete MongoDB


如果你下载的是msi文件,只需要双击安装文件,一步一步安装就可以。最后你会在C:\Program Files目录下发现MongoDB 2.6 Standard文件。这个文件和我们下载的zip文件类似,我们只需要按照zip文件安装的方法安装即可。


MAC:



如果你的系统是mac,有两种方法安装


1、使用brew,只需要执行下面命令就可以安装mongoDB

brew install mongodb

或者

brew install mongodb --with-openssl

在或者

brew install mongodb --devel


2、常规安装

先down下来文件包

curl -O http://downloads.mongodb.org/osx/mongodb-osx-x86_64-2.6.6.tgz

解压

tar -zxvf mongodb-osx-x86_64-2.6.6.tgz

然后将文件复制到安装目录

mkdir -p mongodb

cp -R -n mongodb-osx-x86_64-2.6.6/ mongodb


3、将安装路径配置到rc file

export PATH=<mongodb-install-directory>/bin:$PATH


4、创建数据仓库

mkdir -p /data/db


5、设置数据路径

mongod --dbpath <path to data directory>

注意:不要将mongod.exe文件在公共网内可见,因为MongoDB是在可信任的环境中执行的。


操作数据库:


启动mongodb,创建数据库mongotest

use mongotest;


向mongotest的user表插入数据

db.user.insert({

  name:'zhangsan',

  age:20

});


我们在node环境下来操作数据库


mkdir myproject
cd myproject


创建package.json文件如下


{
  "name": "myproject",
  "version": "1.0.0",
  "description": "My first project",
  "main": "index.js",
  "repository": {
    "type": "git",
    "url": "git://github.com/christkv/myfirstproject.git"
  },
  "dependencies": {
    "mongodb": "~2.0"
  },
  "author": "Christian Kvalheim",
  "license": "Apache 2.0",
  "bugs": {
    "url": "https://github.com/christkv/myfirstproject/issues"
  },
  "homepage": "https://github.com/christkv/myfirstproject"
}


执行npm install命令来安装mongoDB模块。新建文件mongotest.js,内容如下:


var mongodb = require('mongodb');
var server = new mongodb.Server("127.0.0.1",27017,{});//本地27017端口
new mongodb.Db('mongotest',server,{}).open(function(error,client){//数据库:mongotest
    if(error) throw error;
    var collection = new mongodb.Collection(client,'user');//表:user
    collection.find(function(error,cursor){
        cursor.each(function(error,doc){
            if(doc){
                console.log("name:"+doc.name+" age:"+doc.age);
            }
        });
    });
});


运行:


node mongodbTest.js


输出结果为


image.png

命令:


1、基本


show dbs 显示数据库列表
use db 进入db数据库
show collections 显示数据库中的集合

 

2、增


db.table.save({"id":1}) 创建名为table的表,并新增一条数据
db.table.insert({"id":1}) 在table表中插入一条新数据,,如果没有table表,mongodb会自动创建

  

3、改


db.users.update({"id":10},{"name": "zhangsan"}) 修改id=10的记录name=zhangsan,第一个参数是查找条件,第二个参数是修改内容,除了主键,其他内容会被第二个参数的内容替换,主键不能修改

 

  

4、删


db.table.remove()  删除表table的所有数据,但是表还存在
db.table.remove({"id": 1}) 删除table表的id=1的记录
db.table.drop() 删除表table
db.runCommand({"drop","table"}) 删除表table
db.runCommand({"dropDatabase": 1}) 删除当前数据库

 

5、查


db.table.find() 查找table表下的所有数据

db.collection.find({ "key" : value })

查找key=value的数据
db.table.findOne() 查找table表的第一条记录
db.collection.find({ "key" : { $gt: value } }) 查找key > value的数据

  

6、排序


db.collection.find().sort({ "key1" : -1 ,"key2" : 1 })

将查找的结果按照第一个字段降序,第二个字段升序排


相关文章
|
存储 API C++
【Qt 信号槽】深入探索 Qt 信号和槽机制中的引用传递“ (“A Deep Dive into Reference Passing in Qt Signal and Slot Mechanism“)
【Qt 信号槽】深入探索 Qt 信号和槽机制中的引用传递“ (“A Deep Dive into Reference Passing in Qt Signal and Slot Mechanism“)
1334 0
|
XML 域名解析 JSON
【RESTful】RESTful API 接口设计规范 | 示例
【RESTful】RESTful API 接口设计规范 | 示例
13527 0
【RESTful】RESTful API 接口设计规范 | 示例
|
Web App开发 域名解析 缓存
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
本文我们主要为大家介绍在 Ubuntu 20.04 上安装 Node.js 和 npm 的三种不同的方式。
166085 7
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
|
存储 缓存 JSON
详解HTTP四种请求:POST、GET、DELETE、PUT
【4月更文挑战第3天】
73131 5
详解HTTP四种请求:POST、GET、DELETE、PUT
|
算法 API 开发者
【Qt UI相关】Qt中如何控制 窗口的最大化、最小化和关闭按钮?一文带你掌握用法
【Qt UI相关】Qt中如何控制 窗口的最大化、最小化和关闭按钮?一文带你掌握用法
3441 1
|
JavaScript 开发工具 C++
Qt 配置GitHub Copilot
欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。 在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。 在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资
|
存储 C++ 开发者
QListWidget和QListView的使用和item点击事件
QListWidget和QListView的使用和item点击事件
|
前端开发
Qt-QML-电子罗盘
使用QML中的Canvas实现电子罗盘绘制,效果图如下
398 0
Qt-QML-电子罗盘
|
设计模式 安全 C++
我个人整理的C++单例模式,推荐boost方式(★firecat推荐★)
我个人整理的C++单例模式,推荐boost方式(★firecat推荐★)
1240 0