Node.js鏈接MongoDBnode
mongodb https://www.npmjs.com/package...
github項目地址 https://github.com/mongodb/no...
屬於官方提供的mongodb驅動
文檔 http://mongodb.github.io/node...
項目主頁 http://mongodb.github.io/node...
屬於一個輪子,已經造好了linux
PS C:\Users\mingm\Desktop\node> npm install mongodb --save npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\mingm\Desktop\node\package.json' npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\mingm\Desktop\node\package.json' npm WARN node No description npm WARN node No repository field. npm WARN node No README data npm WARN node No license field. + mongodb@3.1.1 added 7 packages from 5 contributors and audited 7 packages in 108.492s found 0 vulnerabilities PS C:\Users\mingm\Desktop\node>
好吧,由於各類版本的緣故,須要使用新的解析器。因此須要設置options的參數
即git
useNewUrlParser: true
2.0的驅動程序
舊版本不須要。github
PS C:\Users\mingm\Desktop\node> node test.js 數據庫鏈接創建 PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://127.0.0.1:27017/mingming"; // 鏈接的url MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 調用封裝好的connect按照url創建和MongoDB之間的鏈接 if (err) { throw err; } console.log("數據庫鏈接創建"); db.close(); })
鏈接之後建立了一個mingming的數據庫mongodb
> show dbs; admin 0.000GB config 0.000GB local 0.000GB > use local; switched to db local >
查詢了一下,尚未,由於沒有往裏面添加數據shell
即,建立一張表數據庫
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://127.0.0.1:27017/mingming"; // 鏈接的url MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 調用封裝好的connect按照url創建和MongoDB之間的鏈接 if (err) { throw err; } console.log("數據庫鏈接創建"); var dbase = db.db('mingming'); // 選擇數據庫爲mingming dbase.createCollection('site', (err, res) => { // 建立數據庫爲mingming下的site集合 if(err) { throw err; } console.log('建立集合!'); db.close(); }); });
PS C:\Users\mingm\Desktop\node> node test.js 數據庫鏈接創建 建立集合! PS C:\Users\mingm\Desktop\node>
看一下這張表npm
> show dbs; admin 0.000GB config 0.000GB local 0.000GB mingming 0.000GB > use mingming switched to db mingming > show ceoolection; 2018-07-31T23:12:55.014+0800 E QUERY [js] Error: don't know how to show [ceoolection] : shellHelper.show@src/mongo/shell/utils.js:1043:11 shellHelper@src/mongo/shell/utils.js:755:15 @(shellhelp2):1:1 > show collections; site > db.site.find(); >
PS C:\Users\mingm\Desktop\node> node test.js 文檔插入成功! PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://127.0.0.1:27017/mingming"; // 鏈接的url MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 調用封裝好的connect按照url創建和MongoDB之間的鏈接 if (err) { throw err; } var dbo = db.db('mingming'); var myobj = { name:"mingming", url:"www.iming.info" }; dbo.collection('site').insertOne(myobj, (err, res) => { // mongodb語法 mingming.site.insert(myObj); if(err) { throw err; } console.log("文檔插入成功!"); db.close(); }); });
> db.site.find(); { "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "www.iming.info" } { "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "www.iming.info" } >
> db.site.find().pretty(); { "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "www.iming.info" } { "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "www.iming.info" } { "_id" : ObjectId("5b6080037aa38239e46c0dc1"), "name" : "mingming", "url" : "www.iming.info", "type" : "cn" } { "_id" : ObjectId("5b6080037aa38239e46c0dc2"), "name" : "google", "url" : "www.google.com.hk", "type" : "un" } { "_id" : ObjectId("5b6080037aa38239e46c0dc3"), "name" : "twitter", "url" : "www.twitter.com", "type" : "un" } >
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://127.0.0.1:27017/mingming"; // 鏈接的url MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 調用封裝好的connect按照url創建和MongoDB之間的鏈接 if (err) { throw err; } var dbo = db.db('mingming'); var myobj = [ {name:"mingming", url:"www.iming.info" , type:"cn"}, {name:"google", url:"www.google.com.hk", type:"un"}, {name:"twitter", url:"www.twitter.com", type:"un"}, ]; dbo.collection('site').insertMany(myobj, (err, res) => { // mongodb語法 mingming.site.insert(myObj); if(err) { throw err; } console.log("文檔插入成功!"); db.close(); }); });
PS C:\Users\mingm\Desktop\node> node test.js 文檔插入成功! PS C:\Users\mingm\Desktop\node>
PS C:\Users\mingm\Desktop\node> node test.js [ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: 'www.iming.info' }, { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: 'www.iming.info' }, { _id: 5b6080037aa38239e46c0dc1, name: 'mingming', url: 'www.iming.info', type: 'cn' }, { _id: 5b6080037aa38239e46c0dc2, name: 'google', url: 'www.google.com.hk', type: 'un' }, { _id: 5b6080037aa38239e46c0dc3, name: 'twitter', url: 'www.twitter.com', type: 'un' } ] PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://127.0.0.1:27017/mingming"; // 鏈接的url MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 調用封裝好的connect按照url創建和MongoDB之間的鏈接 if (err) { throw err; } var dbo = db.db('mingming'); dbo.collection('site').find({}).toArray((err, result) => { // 使用find()查詢完成之後,使用toArray將查詢到的數據完成回調 if (err) { throw err; } console.log(result); // 將回調的結果輸出(因爲結果是暫時保存在內存中的,確保有足夠大的內存保存,或者使用流也可) db.close(); }); });;
> db.site.find().pretty(); { "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "www.iming.info" } { "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "www.iming.info" } { "_id" : ObjectId("5b6080037aa38239e46c0dc1"), "name" : "mingming", "url" : "www.iming.info", "type" : "cn" } { "_id" : ObjectId("5b6080037aa38239e46c0dc2"), "name" : "google", "url" : "www.google.com.hk", "type" : "un" } { "_id" : ObjectId("5b6080037aa38239e46c0dc3"), "name" : "twitter", "url" : "www.twitter.com", "type" : "un" } >
PS C:\Users\mingm\Desktop\node> node test.js [ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: 'www.iming.info' }, { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: 'www.iming.info' }, { _id: 5b6080037aa38239e46c0dc1, name: 'mingming', url: 'www.iming.info', type: 'cn' } ] PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://127.0.0.1:27017/mingming"; // 鏈接的url MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 調用封裝好的connect按照url創建和MongoDB之間的鏈接 if (err) { throw err; } var dbo = db.db('mingming'); var whereStr = {"name":"mingming"}; // 查詢條件 dbo.collection('site').find(whereStr).toArray((err, result) => { // 使用find()查詢完成之後,使用toArray將查詢到的數據完成回調 if (err) { throw err; } console.log(result); // 將回調的結果輸出(因爲結果是暫時保存在內存中的,確保有足夠大的內存保存,或者使用流也可) db.close(); }); });;
PS C:\Users\mingm\Desktop\node> node test.js 文檔更新成功 PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://127.0.0.1:27017/mingming"; // 鏈接的url MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 調用封裝好的connect按照url創建和MongoDB之間的鏈接 if (err) { throw err; } var dbo = db.db('mingming'); var whereStr = {"name":"mingming"}; // 查詢條件 var updateStr = {$set: {"url": "AmingA"}}; dbo.collection('site').updateOne(whereStr, updateStr, (err, result) => { // 使用find()查詢完成之後,使用toArray將查詢到的數據完成回調 if (err) { throw err; } console.log('文檔更新成功'); // 將回調的結果輸出(因爲結果是暫時保存在內存中的,確保有足夠大的內存保存,或者使用流也可) db.close(); }); });;
> db.site.find({"name":"mingming"}).pretty(); { "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "AmingA" } { "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "www.iming.info" } { "_id" : ObjectId("5b6080037aa38239e46c0dc1"), "name" : "mingming", "url" : "www.iming.info", "type" : "cn" } >
mongodb的更新json
> db.site.update({"name":"mingming"}, {$set: {"url":""}}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.site.find({"name":"mingming"}); { "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "" } { "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "www.iming.info" } { "_id" : ObjectId("5b6080037aa38239e46c0dc1"), "name" : "mingming", "url" : "www.iming.info", "type" : "cn" } >
PS C:\Users\mingm\Desktop\node> node test.js { n: 3, nModified: 3, ok: 1 } PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://127.0.0.1:27017/mingming"; // 鏈接的url MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 調用封裝好的connect按照url創建和MongoDB之間的鏈接 if (err) { throw err; } var dbo = db.db('mingming'); var whereStr = {"name":"mingming"}; // 查詢條件 var updateStr = {$set: {"url": ""}}; dbo.collection('site').updateMany(whereStr, updateStr, (err, result) => { // 使用find()查詢完成之後,使用toArray將查詢到的數據完成回調 if (err) { throw err; } console.log(result.result); // 將回調的結果輸出(因爲結果是暫時保存在內存中的,確保有足夠大的內存保存,或者使用流也可) db.close(); }); });;
> db.site.find({"name":"mingming"}); { "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "" } { "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "" } { "_id" : ObjectId("5b6080037aa38239e46c0dc1"), "name" : "mingming", "url" : "", "type" : "cn" } >
一樣deleteOne和deleteMany()不在闡述api
使用sort()完成排序
PS C:\Users\mingm\Desktop\node> node test.js [ { _id: 5b6080037aa38239e46c0dc2, name: 'google', url: 'www.google.com.hk', type: 'un' }, { _id: 5b6080037aa38239e46c0dc3, name: 'twitter', url: 'www.twitter.com', type: 'un' }, { _id: 5b6080037aa38239e46c0dc1, name: 'mingming', url: '', type: 'cn' }, { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' }, { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ] PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://127.0.0.1:27017/mingming"; // 鏈接的url MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 調用封裝好的connect按照url創建和MongoDB之間的鏈接 if (err) { throw err; } var dbo = db.db('mingming'); var mysort = { type:-1 }; // 降序 dbo.collection('site').find().sort(mysort).toArray((err, result) => { if (err) { throw err; } console.log(result); // 將回調的結果輸出(因爲結果是暫時保存在內存中的,確保有足夠大的內存保存,或者使用流也可) db.close(); }); });;
mongodb語法
> db.site.find({}).sort({type:-1}); { "_id" : ObjectId("5b6080037aa38239e46c0dc2"), "name" : "google", "url" : "www.google.com.hk", "type" : "un" } { "_id" : ObjectId("5b6080037aa38239e46c0dc3"), "name" : "twitter", "url" : "www.twitter.com", "type" : "un" } { "_id" : ObjectId("5b6080037aa38239e46c0dc1"), "name" : "mingming", "url" : "", "type" : "cn" } { "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "" } { "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "" } >
使用limit,分頁和排序使用的通通是通道(一個來自linux的概念)
PS C:\Users\mingm\Desktop\node> node test.js [ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' }, { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ] PS C:\Users\mingm\Desktop\node>
PS C:\Users\mingm\Desktop\node> node test.js [ { _id: 5b6080037aa38239e46c0dc1, name: 'mingming', url: '', type: 'cn' }, { _id: 5b6080037aa38239e46c0dc2, name: 'google', url: 'www.google.com.hk', type: 'un' } ] PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://127.0.0.1:27017/mingming"; // 鏈接的url MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 調用封裝好的connect按照url創建和MongoDB之間的鏈接 if (err) { throw err; } var dbo = db.db('mingming'); dbo.collection('site').find().skip(2).limit(2).toArray((err, result) => { if (err) { throw err; } console.log(result); // 將回調的結果輸出(因爲結果是暫時保存在內存中的,確保有足夠大的內存保存,或者使用流也可) db.close(); }); });;
PS C:\Users\mingm\Desktop\node> node test.js [ { _id: 5b6080037aa38239e46c0dc2, name: 'google', url: 'www.google.com.hk', type: 'un' } ] [ { _id: 5b6080037aa38239e46c0dc1, name: 'mingming', url: '', type: 'cn' } ] [ { _id: 5b6080037aa38239e46c0dc2, name: 'google', url: 'www.google.com.hk', type: 'un' } ] [ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ] [ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' } ] [ { _id: 5b6080037aa38239e46c0dc1, name: 'mingming', url: '', type: 'cn' } ] [ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' } ] [ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ] [ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ] [ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' } ] PS C:\Users\mingm\Desktop\node> node test.js [ { _id: 5b6080037aa38239e46c0dc2, name: 'google', url: 'www.google.com.hk', type: 'un' } ] [ { _id: 5b6080037aa38239e46c0dc1, name: 'mingming', url: '', type: 'cn' } ] [ { _id: 5b6080037aa38239e46c0dc3, name: 'twitter', url: 'www.twitter.com', type: 'un' } ] [ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ] [ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ] [ { _id: 5b6080037aa38239e46c0dc1, name: 'mingming', url: '', type: 'cn' } ] [ { _id: 5b6080037aa38239e46c0dc1, name: 'mingming', url: '', type: 'cn' } ] [ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' } ] [ { _id: 5b6080037aa38239e46c0dc3, name: 'twitter', url: 'www.twitter.com', type: 'un' } ] [ { _id: 5b6080037aa38239e46c0dc3, name: 'twitter', url: 'www.twitter.com', type: 'un' } ] PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://127.0.0.1:27017/mingming"; // 鏈接的url MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 調用封裝好的connect按照url創建和MongoDB之間的鏈接 if (err) { throw err; } var dbo = db.db('mingming'); for(var i=0; i<10; i++){ dbo.collection('site').aggregate([{$sample: {size:1}}]).toArray((err, result) => { if (err) { throw err; } console.log(result); // 將回調的結果輸出(因爲結果是暫時保存在內存中的,確保有足夠大的內存保存,或者使用流也可) }); }; db.close(); });;
使用的一樣是管道
www.iming.info