通过Nodejs操作MongoDB
安装MongoDB
安装MongoDB
Install MongoDB Driver
npm install mongodb
引入MongoDB Driver
var mongo = require('mongodb');
通过Nodejs创建MongoDB数据库
1.创建Demo文件:touch createMongodbDemo.js
2.在文件中写入:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
console.log("Database created!");
db.close();
});
3.运行该文件:node createMongodbDemo.js
可以在控制台看到:
4.注意,此时如果在连接了mongo之后,控制台运行show databases
是看不到创建的mydb
这个数据库的,因为该数据库里没有collections,目前只能看到admin
和local
两个数据库
通过Nodejs创建Collection
1.将createMongodbDemo.js
中的代码改写如下,使用db.createCollection
来创建collection:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
db.createCollection("customers", function(err, res) {
if (err) throw err;
console.log("Collection created");
db.close();
})
})
2.运行该文件:node createMongodbDemo.js
3.验证是否创建成功了:
进入mongo:
mongo
-
显示数据库:
show databases
说明之前的mydb
数据库成功创建了 进入
mydb
数据库:use mydb
-
显示collections:
show collections
说明collection创建成功
插入一条数据
1.将代码改写如下,通过insertOne方法进行插入:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var myObj = {
name: 'wilson',
age: 22
}
db.collection("customers").insertOne(myObj, function(err, res) {
if (err) throw err;
console.log("Insert successfully");
db.close();
})
})
2.运行代码
3.切换到mydb
数据库: use mydb
4.查询customers collection中是否插入成功: db.customers.find().pretty()
插入多条数据
1.将代码改写如下,通过insertMany方法进行插入:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var myObjs = [
{
name: 'wilson',
age: 22
},
{
name: 'kathy',
age: 21
},
{
name: 'curry',
age: 28
}
]
db.collection("customers").insertMany(myObjs, function(err, res) {
if (err) throw err;
console.log("Insert successfully");
db.close();
})
})
2.运行代码
3.查询customers collection中是否插入成功: db.customers.find().pretty()
查询一条数据
1.将代码改写如下,通过findOne方法来进行查找:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
db.collection("customers").findOne({"name": "kathy"}, function(err, res) {
if (err) throw err;
console.log(res.age);
db.close();
})
})
输出了找到的那条记录的age。
查询多条数据
1.将代码改写如下,通过find方法来进行查找:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
db.collection("customers").find({}).toArray(function(err, res) {
if (err) throw err;
console.log(res);
db.close();
})
})
当查询条件为空时,会得到所有的记录。
2.如果我希望只显示某些字段该如何处理?比如我不想显示_id
。
通过find方法的第二个参数来设置显示的字段,将上面的代码改写为:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
db.collection("customers").find({}, {"_id": false}).toArray(function(err, res) {
if (err) throw err;
console.log(res);
db.close();
})
})
这里{"_id": false}
就可以不返回_id
字段。
对查询到的数据进行排序
1.将代码改写如下,通过sort方法来进行排序:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var mySort = { age: 1 };
db.collection("customers").find().sort(mySort).toArray(function(err, res) {
if (err) throw err;
console.log(res);
db.close();
})
})
var mySort = { age: 1 };
表示按照age字段的升序进行排序。如果希望降序进行排序,只需要将1改成-1。