国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

vue2.0開發(fā)聊天程序(七) mongoose操作

jhhfft / 2393人閱讀

摘要:連接開啟你的服務(wù)首先確保你已安裝了,并且配置了的環(huán)境變量。此時(shí)再進(jìn)入文件夾,里面會(huì)有許多文件。創(chuàng)建連接新建一個(gè)任意目錄最好新建一個(gè)文件夾便于管理。連接錯(cuò)誤安裝依賴包,運(yùn)行此文件說明已成功連接到數(shù)據(jù)庫。

連接 開啟你的mongodb服務(wù)

首先確保你已安裝了mongodb,并且配置了mongodb的環(huán)境變量。
在任意目錄(建議在非中文目錄)下新建database文件夾,在此文件夾下新建test文件夾(確保此文件夾為空的)。
然后打開cmd,輸入:

 mongod --dbpath "test文件夾的絕對(duì)路徑———— E:database	est"

waiting for connections on port 27017 說明你已經(jīng)在localhost:27017端口上開啟了服務(wù)。

此時(shí)再進(jìn)入test文件夾,里面會(huì)有許多WT文件。

創(chuàng)建連接

新建一個(gè)index.js(任意目錄,最好新建一個(gè)mongodbDemo文件夾便于管理)。

var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/test");
var db = mongoose.connection;


db.on("error",console.error.bind(console,"mongodb連接錯(cuò)誤:"));
db.once("open",function(){
    console.log("mongodb connection is OK!");
});

安裝mongoose依賴包,運(yùn)行此文件

npm install mongoose

node index.js

說明已成功連接到數(shù)據(jù)庫。

寫入第一條數(shù)據(jù) Create

mongoose寫入數(shù)據(jù)的方法有兩個(gè),分別是Model.create()和Documents.save()[即上文的Entity];

1.在寫入數(shù)據(jù)之前,先新建一個(gè)model

var CatSchema = new mongoose.Schema({ // 新建一個(gè)model對(duì)象
    name: String
});
var CatModel = mongoose.model("Cat", CatSchema); // 這一步才正式寫入數(shù)據(jù)庫,數(shù)據(jù)庫對(duì)應(yīng)的model名為Cat

2.插入一條數(shù)據(jù)

//Model.create
CatModel.create({name: "ketty"},function(err,res){ // 第一個(gè)參數(shù)規(guī)定為錯(cuò)誤信息
    console.log(err);
    console.log(res);
})

//promise寫法
CatModel.create({
    name: "kitty"
}).then(res=>{console.log(res)}) // 成功返回當(dāng)前數(shù)據(jù)
.catch(err=>{console.log(err)});

// Documents.save()
var catDoc = new CatModel({name:"ketty"});

catDoc.save(function (err, res) {
    if (err)console.log(err);
    console.log(res);
  });
基于Model的查詢 簡(jiǎn)單查詢
Model.find().then(res=>{ // 傳空匹配所有
    log(res);
}).catch(err=>{
    log(err);
});

Model.find({name: "kitty"}).then(res=>{ // 匹配name為kitty的所有數(shù)據(jù)
    log(res); // 若為查詢到數(shù)據(jù) res為[]
}).catch(err=>{
    log(err);
});

Model.findOne({name: "kitty"}).then(res=>{ // 匹配name為kitty的第一條數(shù)據(jù)
    log(res); // 若為查詢到數(shù)據(jù) res為null
}).catch(err=>{
    log(err);
});

Model.findById(id).then(res=>{// 根據(jù)id查詢
    // tido
}).catch(err=>{
    // tido
})

find和findOne只接受Object作為參數(shù),如果未傳參數(shù)則默認(rèn)為{}。傳其他數(shù)據(jù)類型都會(huì)拋出異常

條件查詢

“$lt” 小于
“$lte” 小于等于
“$gt” 大于
“$gte” 大于等于
“$ne” 不等于

// 查詢 age 大于等于18并小于等于30的文檔
Model.find({"age":{ "$get":18 , "$lte":30 } } );
或查詢

‘$in’ 一個(gè)鍵對(duì)應(yīng)多個(gè)值
‘$nin’ 同上取反, 一個(gè)鍵不對(duì)應(yīng)指定值
“$or” 多個(gè)條件匹配, 可以嵌套 $in 使用
“$not” 同上取反, 查詢與特定模式不匹配的文檔

// 查詢 age等于20或21或21或’haha’的文檔
Model.find({"age":{ "$in":[20,21,22."haha"]} } );

// 查詢 age等于18 或 name等于’xueyou’ 的文檔
 Model.find({"$or" :  [ {"age":18} , {"name":"xueyou"} ] });
類型查詢

"$exists" 是否存在某屬性

null 能匹配自身和不存在的值, 想要匹配鍵的值為null, 就要通過 “$exists” 條件判定鍵值已經(jīng)存在

// 查詢 age值為null的文檔
Model.find("age" :  { "$in" : [null] , "exists" : true  } );

//查詢所有存在name屬性的文檔
Model.find({name: {$exists: true}});

//查詢所有不存在telephone屬性的文檔
Model.find({telephone: {$exists: false}});
正則表達(dá)式

MongoDb 使用 Prel兼容的正則表達(dá)式庫來匹配正則表達(dá)式

// 查詢name為 joe 的文檔, 并忽略大小寫
Model.find( {"name" : /joe/i } )    

//查詢匹配各種大小寫組合
Model.find( {"name" : /joe?/i } )
查詢數(shù)組

‘$all’ 匹配數(shù)組中多個(gè)元素
‘$size’ 匹配數(shù)組長(zhǎng)度
‘$slice’ 查詢子集合返回

// 查詢 array(數(shù)組類型)鍵中有10的文檔,  array : [1,2,3,4,5,10]  會(huì)匹配到
Model.find({"array":10} );

//查詢 array(數(shù)組類型)鍵中下標(biāo)5對(duì)應(yīng)的值是10,  array : [1,2,3,4,5,10]  會(huì)匹配到
Model.find({"array[5]":10} );

//查詢 匹配array數(shù)組中 既有5又有10的文檔
Model.find({"array":[5,10]} );

// 查詢 匹配array數(shù)組長(zhǎng)度為3 的文檔
Model.find({"array":{"$size" : 3} } );

// 查詢 匹配array數(shù)組的前10個(gè)元素
Model.find({"array":{"$skice" : 10} } );

//查詢 匹配array數(shù)組的第5個(gè)到第10個(gè)元素

Model.find({"array":{"$skice" : [5,10] } } );
Where_javacript語句查詢

用$where可以執(zhí)行任意javacript語句作為查詢的一部分,如果回調(diào)函數(shù)返回 true 文檔就作為結(jié)果的一部分返回

Model.find({"$where": function() {
        if (this.x !== null && this.y !== null) {
            return this.x + this.y === 10 ? true : false; // retrun將替代返回結(jié)果
        } else {
            return true;
        }
    }
})

Model.find( {"$where" :  "this.x + this.y === 10" } ) // this指向Model
Model.find( {"$where" : " function(){ return this.x + this.y ===10; } " } )
聯(lián)表查詢

要實(shí)現(xiàn)聯(lián)表查詢需要將連接的Model的主鍵_id指向需要對(duì)應(yīng)Model的某個(gè)屬性上。使用populate進(jìn)行查詢
實(shí)現(xiàn)方法如下:

// *****************創(chuàng)建Model************
var cityModel= mongoose.model("city", {
    cityName: String,
    townList: []
});
var countryModel = mongoose.model("country", {
    country: String,
    cityList:[{
           type: mongoose.Schema.ObjectId,
        ref: "city"  // 將"sity"Model的主鍵與country的cityList對(duì)應(yīng)
    }]
});

// ****************插入數(shù)據(jù)************************
cityModel.create({cityName:"shanghai",townList:["lujiazui"]});
cityModel.create({cityName:"guangzhou",townList:["tianhe"]});
cityModel.create({cityName:"beijing",townList:["zhaoyang"]});

var countryObj = {
    country:"china",
    cityList:[]
}
cityModel.find().then(res=>{  //將所有數(shù)據(jù)查出,并將對(duì)應(yīng)的_id存入數(shù)組
    for(let i in res){
        countryObj.cityList.push(res[i]._id);
    }
    // 插入國家數(shù)據(jù)
    countryModel.create(countryObj,function(err,res){
        console.log(err);
        console.log("res" + res);
    }); 
});

// ****************查詢結(jié)果**********************
countryModel.find().then(res=>{ // 普通查詢
        console.log(res);
}).catch(err=>{
    console.log(err);
})
/*結(jié)果為
[ { cityList:
     [ 5a4ded2b78110500d8b94726,
       5a4ded2b78110500d8b94725,
       5a4ded2b78110500d8b94727 ],
    _id: 5a4df149c249713348a2f546,
    country: "china",
    __v: 0 } ]
*/
countryModel.find({country: "china"}).populate("cityList").then(res=>{ // populate查詢
        console.log(res);
})
/*
[ { cityList: [ [Object], [Object], [Object] ],
    _id: 5a4df149c249713348a2f546,
    country: "china",
    __v: 0 } ]
*/
游標(biāo)

limit(3) 限制返回結(jié)果的數(shù)量
skip(3) 跳過前3個(gè)文檔,返回其余的
sort( "username":1 , "age":-1 } ) 排序 鍵對(duì)應(yīng)文檔的鍵名, 值代表排序方向, 1 升序, -1降序

更新數(shù)據(jù)

‘$inc’ 增減修改器,只對(duì)數(shù)字有效.下面的實(shí)例: 找到 age=22的文檔,修改文檔的age值自增1

Model.update({"age":22}, {"$inc":{"age":1}});

‘$set’ 指定一個(gè)鍵的值,這個(gè)鍵不存在就創(chuàng)建它.可以是任何MondoDB支持的類型.

Model.update({"age":22}, {"$set":{"age":"haha"}});

‘$unset’ 刪除一個(gè)鍵

Model.update({‘a(chǎn)ge’:22}, {’$unset’:{‘a(chǎn)ge’:‘haha’} }  );
數(shù)組更新

‘$push’ 給一個(gè)鍵push一個(gè)數(shù)組成員,鍵不存在會(huì)創(chuàng)建

 Model.update({"age":22}, {"$push":{"array":10} }  );

‘$addToSet’ 向數(shù)組中添加一個(gè)元素,如果存在就不添加

Model.update({"age":22}, {"$addToSet":{"array":10} }  );

‘$each’ 遍歷數(shù)組, 和 $push 修改器配合可以插入多個(gè)值

 Model.update({"age":22}, {"$push":{"array":{"$each": [1,2,3,4,5]}} }  );

‘$pop’ 向數(shù)組中尾部刪除一個(gè)元素

 Model.update({"age":22}, {"$pop":{"array":1} }  );

‘$pull’ 向數(shù)組中刪除指定元素

 Model.update({"age":22}, {"$pull":{"array":10} }  );
刪除
Model.remove(conditions,callback); // conditions為查詢條件,可參考find

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/90668.html

相關(guān)文章

  • vue2.0開發(fā)聊天程序(六) 搞定mongodb

    摘要:為安裝文件,無需再配置環(huán)境變量。連接操作有以下包作者并未查到除此之外的包,但不代表沒有。等于是每個(gè)默認(rèn)配置的主鍵屬性,屬性名為可自己定義一個(gè)來覆蓋此屬性。需要注意的是,在新版本的文檔中,為。通過創(chuàng)建限于篇幅,本小節(jié)暫時(shí)寫到這里。 我的琴聲嗚咽,我的淚水全無。我把遠(yuǎn)方的遠(yuǎn)歸還草原。                   - 海子《九月》 mongodb安裝 什么是Mongodb?就是一個(gè)基...

    Dr_Noooo 評(píng)論0 收藏0
  • vue2.0開發(fā)聊天程序(八) 初步完成

    摘要:主要表現(xiàn)在復(fù)雜的語句事務(wù)支持等。僅支持,在等瀏覽器中,會(huì)出現(xiàn)樣式布局混亂的情況。將群群對(duì)應(yīng)的聊天記錄保存在數(shù)據(jù)庫。用戶進(jìn)入群聊,則將其加入到對(duì)應(yīng)的中。文件大小不能超過通過模塊操作登錄注冊(cè)將用戶名作為唯一值。登錄支持自動(dòng)登錄,將密碼保存在中。 showImg(https://segmentfault.com/img/bV4jYr?w=402&h=710);showImg(https://...

    wmui 評(píng)論0 收藏0
  • XBlog: Vue+Express+Mongodb的全??蓴U(kuò)展的完整博客系統(tǒng)

    摘要:注冊(cè)成功后會(huì)返回注冊(cè)用戶的此就是上面說到的,用于用戶登陸的基礎(chǔ),請(qǐng)保管好。 地址 https://github.com/billyhoomm...http://blog.billyhu.com 說明(Instructions) 本項(xiàng)目后臺(tái)基于express、mongodb,前臺(tái)基于Vue2.0全家桶、bootstrap、scss預(yù)編譯器以及一眾工具類插件 項(xiàng)目前后臺(tái)代碼在同一個(gè)目錄中...

    Salamander 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

jhhfft

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<