npm install express -g npm install express-generator -g
cmd: express project(項目名字) -e(使用ejs模板引擎)
cd project npm install
1. package.json body-parse:專門負責解析前端傳遞來的數據 cookie-parser:解析請求頭中的cookie信息 ejs:模板引擎編譯工具 serve-favicon:專門處理相似於谷歌瀏覽主動請求favicon.ico文件的問題 2. bin/www 這個是和建立的服務相關的東西,能夠在這裏配置端口等等設置。 3. public:靜態資源文件夾,在這個文件夾裏的文件,在前端均可以直接訪問,不須要再在後端配置路由, /stylesheets/a.css 4. app.js:主應用文件,在這裏能夠設置路由、插件等等之類的東西,其實建立出來的就是requestListener 5. views:放入ejs模板,express會將ejs模板裝換成html文件 6. routes:裏面的全是路由文件,專門來處理不一樣的請求
[ { "_id":ObjectId("1726iuhas678971726731"), "age":25, "city":"beijing", "email":"asdgakj@qq.com" }, { "_id":ObjectId("1726iuhas678971726731"), "age":25, "city":"beijing", "email":"asdgakj@qq.com" } ]
[ {"genres": ["犯罪","劇情" ],"title": "肖申克的救贖"}, {"title":"阿甘正傳",grade:"8.4","genres":"勵志"} ]
{ 'title':['aaa',"aaa","aaa",["a":{}]] }, { 'title':'bbb' }
String : 這是最經常使用的數據類型來存儲數據。在MongoDB中的字符串必須是有效的UTF-8。 Integer : 這種類型是用來存儲一個數值。整數能夠是32位或64位,這取決於您的服務器。 Boolean : 此類型用於存儲一個布爾值 (true/ false) 。 Double : 這種類型是用來存儲浮點值。 Min/ Max keys : 這種類型被用來對BSON元素的最低和最高值比較。 Arrays : 使用此類型的數組或列表或多個值存儲到一個鍵。 Timestamp : 時間戳。這能夠方便記錄時的文件已被修改或添加。 Object : 此數據類型用於嵌入式的文件。 Null : 這種類型是用來存儲一個Null值。 Symbol : 此數據類型用於字符串相同,但它一般是保留給特定符號類型的語言使用。 Date : 此數據類型用於存儲當前日期或時間的UNIX時間格式。能夠指定本身的日期和時間,日期和年,月,日到建立對象。 Object ID : 此數據類型用於存儲文檔的ID。 Binary data : 此數據類型用於存儲二進制數據。 Code : 此數據類型用於存儲到文檔中的JavaScript代碼。 Regular expression : 此數據類型用於存儲正則表達式
* Help查看命令提示 help db.help() db.test.help() db.test.find().help() * 建立/切換數據庫 use music * 查詢數據庫 show dbs 空庫將不會顯示 db.albums.insertOne({'title':'bey bey'})來插入一條後再看 * 查看當前使用的數據庫 db/db.getName() * 顯示當前DB狀態 db.stats() * 查看當前DB版本 db.version() * 查看當前DB的連接機器地址 db.getMongo() * 刪除數據庫 db.dropDatabase()
建立一個彙集集合 db.createCollection("collName", {size(集合大小): 20, capped(固定大小,可提升使用效率): true, max(最大值): 100}); db.collName.isCapped(); //判斷集合是否爲定容量 獲得指定名稱的彙集集合 db.getCollection("account"); 獲得當前db的全部彙集集合 db.getCollectionNames(); 顯示當前db全部彙集的狀態 db.printCollectionStats();
db.users.find()
db.users.save({name: ‘zhangsan', age: 25, sex: true}); db.users.insertOne({name: ‘zhangsan', age: 25, sex: true}); db.users.insertMany([{name: ‘zhangsan', age: 25, sex: true},{name: ‘zhangsan', age: 25, sex: true}]);
db.users.update({age: 25}(約定條件,所有修改只寫{}), {$set: {name: 'changeName',sex:1}}, false, true); 第三個參數爲,若是沒有這個數據,會不會建立,第四個參數爲,若是有不少,是要全改true,仍是隻改第一條 至關於:update users set name = ‘changeName' where age = 25; db.users.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true); 至關於:update users set age = age + 50 where name = ‘Lisi'; db.users.update({name: 'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true); 至關於:update users set age = age + 50, name = ‘hoho' where name = ‘Lisi';
db.users.remove({age: 32});符合條件全刪
db.users.remove({age: 132},{justone:true});只刪一條
db.users.remove({});刪除全部document
db.users.findAndModify({
query: {age: {$gte: 25}},
sort: {age: -1},
update: {$set: {name: 'a2'}, $inc: {age: 2}},
remove: true
});
db.runCommand({ findandmodify : "users",
query: {age: {$gte: 25}},
sort: {age: -1},
update: {$set: {name: 'a2'}, $inc: {age: 2}},
remove: true
});
query 過濾條件 $gte大於
sort若是多個文檔符合查詢過濾條件,將以該參數指定的排列方式選擇出排在首位的對象,該對象將被操做,-1位爲降序
remove 若爲true,被選中對象將在返回前被刪除
update 一個 修改器對象
remove 建立新對象若查詢結果爲空
mongodb在存儲數據的時候會自動的爲每個document生成一個_id主鍵,咱們在nodeJS中根據_id查找的時候要注意一點,不能直接:
let _id = '5a0bc041bf680d5ee434683d'
coll.find({_id:_id})
須要從mongodb模塊中引入ObjectID方法,這個方法能夠將上面的字符串轉成mongodb數據庫能夠識別的_id數據類型
var ObjectID = require("mongodb").ObjectID
let _id = '5a0bc041bf680d5ee434683d'
coll.find({_id:ObjectID(_id)})
db.userInfo.find(); 至關於:select* from userInfo; 查詢去重後數據 db.userInfo.distinct("name"); 至關於:select distict name from userInfo; 查詢age = 22的記錄 db.userInfo.find({"age": 22}); 至關於: select * from userInfo where age = 22; 查詢age > 22的記錄 db.userInfo.find({age: {$gt: 22}}); 至關於:select * from userInfo where age >22; 查詢age < 22的記錄 db.userInfo.find({age: {$lt: 22}}); 至關於:select * from userInfo where age <22; 查詢age >= 25的記錄 db.userInfo.find({age: {$gte: 25}}); 至關於:select * from userInfo where age >= 25; 查詢age <= 25的記錄 db.userInfo.find({age: {$lte: 25}}); 查詢age >= 23 而且 age <= 26 db.userInfo.find({age: {$gte: 23, $lte: 26}}); 查詢name中包含 mongo的數據 db.userInfo.find({name: /^mongo/}); //至關於%% select * from userInfo where name like ‘%mongo%’; 查詢name中以mongo開頭的 db.userInfo.find({name: /^mongo/}); 至關於select * from userInfo where name like ‘mongo%’; 查詢指定列name、age數據 db.userInfo.find({}, {name: 1, age: 1}); 至關於:select name, age from userInfo; 查詢指定列name、age數據, age > 25 db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1}); 至關於:select name, age from userInfo where age >25; 按照年齡排序 升序:db.userInfo.find().sort({age: 1}); 降序:db.userInfo.find().sort({age: -1}); 查詢name = zhangsan, age = 22的數據 db.userInfo.find({name: 'zhangsan', age: 22}); 至關於:select * from userInfo where name = ‘zhangsan' and age = ’22'; 查詢前5條數據 db.userInfo.find().limit(5); 至關於:select top 5 * from userInfo; 查詢10條之後的數據 db.userInfo.find().skip(10); 至關於:select * from userInfo where id not in ( select top 10 * from userInfo ); 查詢在5-10之間的數據 db.userInfo.find().limit(10).skip(5); or與 查詢 db.userInfo.find({$or: [{age: 22}, {age: 25}]}); 至關於:select * from userInfo where age = 22 or age = 25; 查詢第一條數據 db.userInfo.findOne(); 至關於:selecttop 1 * from userInfo; db.userInfo.find().limit(1); 查詢某個結果集的記錄條數 db.userInfo.find({age: {$gte: 25}}).count(); 至關於:select count(*) from userInfo where age >= 20;
今天說的知識點有點多,須要記得也比較多,有須要的地方能夠記下來,方便運用,好了,就這麼多了。php