插入文檔
mongodb 查詢使用 find() 方法。
db.collection.find(query, projection) * query 可選,使用查詢操作符指定查詢條件 * projection 可選,使用投影操作符指定返回的鍵 // 如果想以易讀的方式讀出,使用 `pretty()` db.col.find().pretty() // 除了find() 之外還有 findOne() 顧名思義是只找一個
AND
db.col.find({"title":"zjj" , "sex":"男"})
OR
db.col.find({$or[{key: val1}, {key1: val2}]})
OR 和 AND
db.col.find({"like": {$gt: 50}, $or:[{"by":"zjj"},{"title":"zjjasdada"}]})
條件操作符一、查詢于投影
// = // 查詢 age = 20 db.person.find({ age: { $eq: 20 } }) // 相當于 db.person.find({age: 20})
// > // 查詢 age > 20 db.person.find({age: {$gt: 20}})
// < // 查詢 age < 20 db.person.find({age: {$lt: 20}})
// >= // 查詢 age >= 20 db.person.find({age: {$gte: 20}})
// <= // 查詢 age <= 20 db.person.find({age: {$lte: 20}})
// ≠ // 查詢 age ≠ 20 db.person.find({age: {$ne: 20}})
// ≠ // 匹配數組中的任一值 db.person.find({qyt: {$in :[5, 12]}})
// nin // 不匹配數組中的值 db.person.find({qty : {$nin: [2,322]}})
// 或 條件查詢 db.person.find({$or: [{age: {$lt: 20}},{address: "beijing"}]})
// 且 條件查詢 db.person.find({$and: [{age: {$lt: 20}},{address: "beijing"}]})
// 查詢與表達式不匹配的文檔 db.person.find({age: {$not: {$gt: 20}}});
// 查詢與任一表達式都不匹配的文檔 db.col.find({$nor: [{age: 20}, {sex: "男"}]}})
// 查詢存在指定字段的文檔 // 查詢存在phone字段的文檔: db.col.find({phone: {$exists: true}})
// 查詢類型為指定類型的文檔,3.2版本添加alias別名,各種類型的Number及Alias如下
// 假設有 { "_id": 1, address: "2030 Martian Way",zipCode: "90698345"}, { "_id": 2, address: "156 Lunar Place",zipCode: 43339374}, { "_id": 3, address: "2324 Pluto Place",zipCode: NumberLong(3921412)}, { "_id": 4, address: "55 Saturn Ring", zipCode: NumberInt(88602117)} // 查詢該集合中zipCode字段的數據類型為String類型的文檔: db.col.find({zipCode: {$type: "string"}}); db.addressBook.find( { "zipCode" : { $type : 2 } } );
// 取余條件查詢 // 查詢age字段的值除以2余0的文檔: db.person.find( { age: {$mod : [2, 0] } } )
// 正則表達式查詢 db.person.find({sku: { $regex: /^ABC/i }})
// 文本索引查詢 { $text: { $search:, $language: , $caseSensitive: , $diacriticSensitive: } } // 具體請查看官方文檔
// 可以支持字符穿或者是函數 db.myCollection.find( { $where: "this.credits == this.debits" } ); db.myCollection.find( { $where: function() { return obj.credits == obj.debits; } } );
// 匹配文檔的數組字段中包含所有指定元素的文檔 查詢articles集合中tags字段(是個數組)包含“ssl”和“security”的文檔(包含,但并不是全部等于) db.articles.find({tagS: { $all:[ ["aal", "dsada"] ] } })
匹配內嵌文檔或數組中的部分field // 假設有 { _id: 1, results: [ 82, 85, 88 ] } { _id: 2, results: [ 75, 88, 89 ] } db.col.find({results: { $elemMatch: { $gte: 80, $lt: 85} } }); // 查詢results數組中含有區間[80,85)元素的文檔(結果為第一條);
// 匹配數組長度為指定大小的文檔 查詢已經集齊了5張福卡的文檔: db.person.find({card:{$size:5}})
//查詢數組中首個匹配條件的元素,相當于findOne()方法 { "_id" : 1, "semester" : 1, "grades" : [ 70, 87, 90 ] } { "_id" : 2, "semester" : 1, "grades" : [ 90, 88, 92 ] } { "_id" : 3, "semester" : 1, "grades" : [ 85, 100, 90 ] } { "_id" : 4, "semester" : 2, "grades" : [ 79, 85, 80 ] } { "_id" : 5, "semester" : 2, "grades" : [ 88, 88, 92 ] } { "_id" : 6, "semester" : 2, "grades" : [ 95, 90, 96 ] } db.student.find({semester : 1 , grades: {$gte: 85}}, {"grades.$": 1}); 查詢semester=1,并且grades中符合大于等于85的元素的第一個元素: // 查詢結果是 { "_id" : 1, "grades" : [ 87 ] } { "_id" : 2, "grades" : [ 90 ] } { "_id" : 3, "grades" : [ 85 ] }
{ _id: 1, zipcode: "63109", students: [ { name: "john", school: 102, age: 10 }, { name: "jess", school: 102, age: 11 }, { name: "jeff", school: 108, age: 15 } ] } { _id: 2, zipcode: "63110", students: [ { name: "ajax", school: 100, age: 7 }, { name: "achilles", school: 100, age: 8 }, ] } { _id: 3, zipcode: "63109", students: [ { name: "ajax", school: 100, age: 7 }, { name: "achilles", school: 100, age: 8 }, ] } //查詢zipcode為63109并且students數組中school=102的文檔: db.school.find({ zipcode: "63109" }, {student: { $elemMatch: { school: 102 } } } ) // result { "_id" : 1, "students" : [ { "name" : "john", "school" : 102, "age" : 10 } ] } { "_id" : 3 }
// 在查詢中將數組進行切片(類似于分頁) (1)查詢結果中,對于comments數組的元素只顯示前5個: db.posts.find( {}, { comments: { $slice: 5 } } ) (2)查詢結果中,對于comments數組的元素只顯示后5個: db.posts.find( {}, { comments: { $slice: -5 } } ) (3)查詢結果中,對于comments數組的元素跳過(skip)前20個,并只顯示(limit)10個元素(即21-30): db.posts.find( {}, { comments: { $slice: [ 20, 10 ] } } ) (4)同理,跳過后20個,并顯示10個: db.posts.find( {}, { comments: { $slice: [ -20, 10 ] } } )
skip 和 Limit
limit
// 獲取20條 db.things.find().limit(20);
limit
// 跳過20.再選20條 db.things.find().skip(20).limit(20)
排序
db.things.find().sort({"likes":-1}) -1表示倒序排列
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19220.html
摘要:再次查看刪除數據庫刪除當前所在的數據庫創建集合創建默認的集合創建帶有參數的集合創建集合可以使用下面的方法參數配置如下字段類型描述布爾如果為,則創建固定集合。布爾可選如為,自動在字段創建索引。數值可選為固定集合指定一個最大值以字節計。 以windows服務啟動mongodb // 創建目錄 d: data/ conf -->配...
摘要:返回內容查詢出來后顯示的結果樣式,可以用和控制是否顯示。修飾符文件使用進行鏈接對應的集合聲明變量,并把查詢結果賦值給利用游標的進行循環輸出結果。到此的基礎操作就結束了,但是我們還沒有結束呢,下一節我們會用配合使用哦 find查詢操作是我們平時再開發中最常用的,也是重中之重。 find基本操作符 // 批量插入數據 var workmate1={ name:JSPang, ag...
摘要:歡迎進入基礎課程博客地址本系列文章將主要針對一些基礎知識點進行講解,為平時歸納所總結,不管是剛接觸開發菜鳥還是業界資深人士,都希望對廣大同行帶來一些幫助。是同步的,而不是。因此,更適合于單線程環境,而適合于多線程環境。 歡迎進入JAVA基礎課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎知識點進行講解,為平時歸納所總...
摘要:歡迎進入基礎課程博客地址本系列文章將主要針對一些基礎知識點進行講解,為平時歸納所總結,不管是剛接觸開發菜鳥還是業界資深人士,都希望對廣大同行帶來一些幫助。是同步的,而不是。因此,更適合于單線程環境,而適合于多線程環境。 歡迎進入JAVA基礎課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎知識點進行講解,為平時歸納所總...
閱讀 4160·2021-11-22 13:52
閱讀 2078·2021-09-22 15:12
閱讀 1121·2019-08-30 15:53
閱讀 3455·2019-08-29 17:12
閱讀 2190·2019-08-29 16:23
閱讀 1647·2019-08-26 13:56
閱讀 1772·2019-08-26 13:44
閱讀 1880·2019-08-26 11:56