摘要:比如現(xiàn)在是第頁,就跳過前頁乘以每頁條。按降序排序更新查詢條件更改項目第三個參數(shù)設(shè)為只更新一個文檔。更改文檔某一條些數(shù)據(jù)再調(diào)用方法也可更新。刪除查詢條件其他常用的增刪改查解讀的一切都是從開始的。每個映射到集合,并定義該集合中的數(shù)據(jù)格式類型。
[email protected] 快速入門
const mongoose = require("mongoose"); /* 連接數(shù)據(jù)庫 */ mongoose.connect("mongodb://localhost/mytest", {useNewUrlParser: true}); // 如果沒有mytest這個數(shù)據(jù)庫,則會自行創(chuàng)建 let db = mongoose.connection; // 如果連接發(fā)生錯誤 db.on("error", ()=>{console.error("連接錯誤")}); // 如果連接成功 db.once("open", ()=>{console.log("已經(jīng)連接")}); /* 注冊一個集合kittens */ let kittySchema = new mongoose.Schema({ name: String, age: Number }); // 添加方法,被編譯到Model原型并在每個文檔實例上公開 kittySchema.methods.talk = function(){ let greeting = this.name || "我還沒有名字"; console.log(`我叫${greeting}`); }; let Kitten = mongoose.model("kittens", kittySchema); /* 創(chuàng)建kittens集合的文檔(實例,即一條數(shù)據(jù))*/ let silence = new Kitten({ name: "silence", age: 1 }); // console.log(silence); 會自動加一個 _id 的屬性 let fluffy = new Kitten({ name: "fluffy", age: .5 }); // 存到MongoDB上 silence.save(); fluffy.save((err, result)=>{ if(err)return; fluffy.talk(); });查詢
第一個參數(shù)是查詢條件,第二個參數(shù)指定結(jié)果輸出的項目(可省略,就是全部輸出)。
Kitten.find({name: /^flu/}, {name: 1, _id: 0},(err, result)=>{ if(err)return; console.log(result); })基礎(chǔ)查詢
Kitten.findOne()利用id的唯一性查詢
Kitten.findById(_id,callback)利用正則表達(dá)式模糊查詢
let findCondition = { name: { $regex: /si/i } }其他條件
{ age: { $gte: 18 // age >= 18 } }
$or或關(guān)系
$nor或關(guān)系取反
$gt大于
$gte大于等于
$lt小于
$lte小于等于
$ne不等于
$in在多個值范圍內(nèi)
$nin不在多個值范圍內(nèi)
$all匹配數(shù)組中多個值
$regex正則,用于模糊查詢
$size匹配數(shù)組大小
$maxDistance范圍查詢,距離(基于LBS)
$mod取模運算
$near鄰域查詢,查詢附近的位置(基于LBS)
$exists字段是否存在
$elemMatch匹配內(nèi)數(shù)組內(nèi)的元素
$within范圍查詢( 基于LBS)
$box范圍查詢,矩形范圍(基于LBS)
$center范圍醒詢,圓形范圍(基于LBS)
$centerSphere范圍查詢,球形范圍(基于LBS)
$slice查詢字段集合中的元素(比如從第幾個之后,第N到第M個元素)
查詢數(shù)量Kitten.count({/* 查詢條件 */},(err,num)=>{})分頁查詢(important)
let findCondition = {}; // 查詢條件 let pageSize = 10; // 每頁多少條 let currPage = 5; // 當(dāng)前是多少頁 let skipNum = (currPage-1)*pageSize; // 跳過條數(shù)。比如現(xiàn)在是第5頁,就跳過前4頁乘以每頁10條。 let sort = { age: -1 // 按age降序排序 } Kitten.find(findCondition,{_id:0,age:1,name:1}) .skip(skipNum) .limit(pageSize) .sort(sort) .exec((err,result)=>{});更新
Kitten.update({/*查詢條件*/}, {/*更改項目*/}, {}, (err,res)=>{}); // 第三個參數(shù)設(shè)為`{multi: false}`只更新一個文檔。
更改文檔某一條(些)數(shù)據(jù)再調(diào)用save方法也可更新。
刪除Kitten.remove({/* 查詢條件 */}, callback)其他常用的增刪改查api
Model.deleteMany()
Model.deleteOne()
Model.findById()
Model.findByIdAndDelete()
Model.findByIdAndRemove()
Model.findByIdAndUpdate()
Model.findOneAndDelete()
Model.findOneAndRemove()
Model.findOneAndUpdate()
Model.replaceOne()
Model.updateMany()
Model.updateOne()
解讀Schemamongoose的一切都是從Schema開始的。每個Scheam映射到MongoDB集合,并定義該集合中 documnet 的數(shù)據(jù)格式類型。
https://mongoosejs.com/docs文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/19298.html
摘要:如圖連接成功后,顯示你的數(shù)據(jù)庫,在這個節(jié)目可以對數(shù)據(jù)庫進(jìn)行操作。如圖安裝與加載首先假定你已經(jīng)安裝了,命令行工具輸入在使用的文件中即可。創(chuàng)建讀取更新刪除單值讀取上文是在中基于對進(jìn)行增刪查改操作的簡單介紹,以后會有進(jìn)階的文章。 關(guān)鍵詞:mongodb安裝 mongoose使用 robomongo mongoose的CRUD操作 mongoose的查詢,增加,修改,刪除 工具介紹 Mon...
摘要:如圖連接成功后,顯示你的數(shù)據(jù)庫,在這個節(jié)目可以對數(shù)據(jù)庫進(jìn)行操作。如圖安裝與加載首先假定你已經(jīng)安裝了,命令行工具輸入在使用的文件中即可。創(chuàng)建讀取更新刪除單值讀取上文是在中基于對進(jìn)行增刪查改操作的簡單介紹,以后會有進(jìn)階的文章。 關(guān)鍵詞:mongodb安裝 mongoose使用 robomongo mongoose的CRUD操作 mongoose的查詢,增加,修改,刪除 工具介紹 Mon...
最近在學(xué)習(xí)node,所以聽說node和mongodb更配哦。。所以我就來學(xué)習(xí)mongodb了showImg(https://segmentfault.com/img/remote/1460000006818697); 一、mongodb的開啟和關(guān)閉 1. 查找mongod是否可用 which mongod 2. 啟動mongodb 指定path 和log日志 mongod --dbpath /...
閱讀 3729·2021-11-25 09:43
閱讀 2609·2021-11-18 13:11
閱讀 2229·2019-08-30 15:55
閱讀 3279·2019-08-26 11:58
閱讀 2835·2019-08-26 10:47
閱讀 2237·2019-08-26 10:20
閱讀 1279·2019-08-23 17:59
閱讀 3014·2019-08-23 15:54