摘要:結構對表的所有數據做過濾,返回中以開頭的元素表原數據返回數據示例數據庫隨機構建表返回只保留了符合過濾規則的第一個元素,順序不能換返回將一個文檔拆分成多個文檔返回數組元素包含字符串返回
DOC: https://docs.mongodb.com/manu...
collection(test)結構{ _id: Objectd("123456789"), category: [ "apple_1", "apple_2", "banana_1", "banana_2" ] }Question:
對test表的所有數據做category過濾,返回category中以apple開頭的元素
表原數據:
[ { _id: Objectd("id1"), category: [ "apple_1", "apple_2", "banana_1", "banana_2" ] }, { _id: Objectd("id2"), category: [ "apple_3", "apple_4", "banana_1", "banana_2" ] } ... ]
返回數據示例:
[ { _id: Objectd("id1"), category: [ "apple_1", "apple_2" ] }, { _id: Objectd("id2"), category: [ "apple_3", "apple_4" ] } ... ]
數據庫try:隨機構建test表
function getRandomArrayElements(arr, count) { var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index; while (i-- > min) { index = Math.floor((i + 1) * Math.random()); temp = shuffled[index]; shuffled[index] = shuffled[i]; shuffled[i] = temp; } return shuffled.slice(min); } var temp = ["apple_1","apple_2","banana_3","banana_4","pear_5","pear_6","pear_7"]; for(var i =0; i < 10; i ++){ db.getCollection("test").insert({ category:getRandomArrayElements(temp, Math.random()*7) }) }Try 1:
db.test.find({},{"category":{ "$elemMatch":{ $regex: "apple" } }})
返回:
[ { _id: Objectd("id1"), category: [ "apple_1", ] }, { _id: Objectd("id2"), category: [ "apple_3", ] } ... ]
category只保留了符合過濾規則的第一個元素Try 2:
db.test.aggregate( { $unwind: "$category" }, { $match: { category: { $regex: "apple_" } } }, //unwind,match順序不能換 )
返回:
[ { _id: Objectd("id1"), category: "apple_1" }, { _id: Objectd("id1"), category: "apple_2" }, { _id: Objectd("id2"), category: "apple_3" }, { _id: Objectd("id2"), category: "apple_4" } ... ]
將一個文檔拆分成多個文檔返回Try 3(Solution):
db.test.aggregate({ $project: { "category":{ $filter: { input: "$category", as: "cate", cond: { // category數組元素cate包含字符串"apple_" $eq: [ { $indexOfCP: ["$$cate", "apple_"] }, 0] } } } } })
返回:
[ { _id: Objectd("id1"), category: [ "apple_1", "apple_2" ] }, { _id: Objectd("id2"), category: [ "apple_3", "apple_4" ] } ... ]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19472.html
摘要:操作符如何使用索引有一些查詢完全無法使用索引,也有一些查詢能夠比其他查詢更高效地使用索引。有時能夠使用索引,但是通常它并不知道要如何使用索引。索引對象和數組允許深入文檔內部,對嵌套字段和數組建立索引。 上一篇文章:MongoDB指南---10、索引、復合索引 簡介下一篇文章:MongoDB指南---12、使用explain()和hint()、何時不應該使用索引 1、使用復合索引 在多...
摘要:操作符如何使用索引有一些查詢完全無法使用索引,也有一些查詢能夠比其他查詢更高效地使用索引。有時能夠使用索引,但是通常它并不知道要如何使用索引。索引對象和數組允許深入文檔內部,對嵌套字段和數組建立索引。 上一篇文章:MongoDB指南---10、索引、復合索引 簡介下一篇文章:MongoDB指南---12、使用explain()和hint()、何時不應該使用索引 1、使用復合索引 在多...
摘要:但有時我們希望返回與查詢條件相匹配的任意一個數組元素。首先,可以使用要求同時使用查詢條件中的兩個語句與一個數組元素進行比較。 上一篇文章:MongoDB指南---7、find簡介與查詢條件下一篇文章:MongoDB指南---9、游標與數據庫命令 如第2章所述,MongoDB的文檔可以使用多種類型的數據。其中有一些在查詢時會有特別的表現。 4.3.1 null null類型的行為有點奇...
摘要:但有時我們希望返回與查詢條件相匹配的任意一個數組元素。首先,可以使用要求同時使用查詢條件中的兩個語句與一個數組元素進行比較。 上一篇文章:MongoDB指南---7、find簡介與查詢條件下一篇文章:MongoDB指南---9、游標與數據庫命令 如第2章所述,MongoDB的文檔可以使用多種類型的數據。其中有一些在查詢時會有特別的表現。 4.3.1 null null類型的行為有點奇...
摘要:是在環境下對進行便捷操作的對象模型工具安裝一開始需要安裝環境以及數據庫,然后創建數據文件夾并且啟動安裝啟動。出錯返回符合條件的文檔數。修改后的標題同上取反,刪除一個字段執行后字段不存在增減修改器,只對數字有效。 Mongoose是在node.js環境下對mongodb進行便捷操作的對象模型工具 安裝 一開始需要安裝node.js環境以及mongodb數據庫,然后創建mongdb數據文件...
閱讀 2106·2021-11-24 09:39
閱讀 1495·2019-08-30 15:44
閱讀 1946·2019-08-29 17:06
閱讀 3393·2019-08-29 16:32
閱讀 3543·2019-08-29 16:26
閱讀 2654·2019-08-29 15:35
閱讀 3026·2019-08-29 12:50
閱讀 1636·2019-08-29 11:15