摘要:結(jié)構(gòu)對(duì)表的所有數(shù)據(jù)做過(guò)濾,返回中以開(kāi)頭的元素表原數(shù)據(jù)返回?cái)?shù)據(jù)示例數(shù)據(jù)庫(kù)隨機(jī)構(gòu)建表返回只保留了符合過(guò)濾規(guī)則的第一個(gè)元素,順序不能換返回將一個(gè)文檔拆分成多個(gè)文檔返回?cái)?shù)組元素包含字符串返回
DOC: https://docs.mongodb.com/manu...
collection(test)結(jié)構(gòu){ _id: Objectd("123456789"), category: [ "apple_1", "apple_2", "banana_1", "banana_2" ] }Question:
對(duì)test表的所有數(shù)據(jù)做category過(guò)濾,返回category中以apple開(kāi)頭的元素
表原數(shù)據(jù):
[ { _id: Objectd("id1"), category: [ "apple_1", "apple_2", "banana_1", "banana_2" ] }, { _id: Objectd("id2"), category: [ "apple_3", "apple_4", "banana_1", "banana_2" ] } ... ]
返回?cái)?shù)據(jù)示例:
[ { _id: Objectd("id1"), category: [ "apple_1", "apple_2" ] }, { _id: Objectd("id2"), category: [ "apple_3", "apple_4" ] } ... ]
數(shù)據(jù)庫(kù)try:隨機(jī)構(gòu)建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只保留了符合過(guò)濾規(guī)則的第一個(gè)元素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" } ... ]
將一個(gè)文檔拆分成多個(gè)文檔返回Try 3(Solution):
db.test.aggregate({ $project: { "category":{ $filter: { input: "$category", as: "cate", cond: { // category數(shù)組元素cate包含字符串"apple_" $eq: [ { $indexOfCP: ["$$cate", "apple_"] }, 0] } } } } })
返回:
[ { _id: Objectd("id1"), category: [ "apple_1", "apple_2" ] }, { _id: Objectd("id2"), category: [ "apple_3", "apple_4" ] } ... ]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/19472.html
摘要:操作符如何使用索引有一些查詢(xún)完全無(wú)法使用索引,也有一些查詢(xún)能夠比其他查詢(xún)更高效地使用索引。有時(shí)能夠使用索引,但是通常它并不知道要如何使用索引。索引對(duì)象和數(shù)組允許深入文檔內(nèi)部,對(duì)嵌套字段和數(shù)組建立索引。 上一篇文章:MongoDB指南---10、索引、復(fù)合索引 簡(jiǎn)介下一篇文章:MongoDB指南---12、使用explain()和hint()、何時(shí)不應(yīng)該使用索引 1、使用復(fù)合索引 在多...
摘要:操作符如何使用索引有一些查詢(xún)完全無(wú)法使用索引,也有一些查詢(xún)能夠比其他查詢(xún)更高效地使用索引。有時(shí)能夠使用索引,但是通常它并不知道要如何使用索引。索引對(duì)象和數(shù)組允許深入文檔內(nèi)部,對(duì)嵌套字段和數(shù)組建立索引。 上一篇文章:MongoDB指南---10、索引、復(fù)合索引 簡(jiǎn)介下一篇文章:MongoDB指南---12、使用explain()和hint()、何時(shí)不應(yīng)該使用索引 1、使用復(fù)合索引 在多...
摘要:但有時(shí)我們希望返回與查詢(xún)條件相匹配的任意一個(gè)數(shù)組元素。首先,可以使用要求同時(shí)使用查詢(xún)條件中的兩個(gè)語(yǔ)句與一個(gè)數(shù)組元素進(jìn)行比較。 上一篇文章:MongoDB指南---7、find簡(jiǎn)介與查詢(xún)條件下一篇文章:MongoDB指南---9、游標(biāo)與數(shù)據(jù)庫(kù)命令 如第2章所述,MongoDB的文檔可以使用多種類(lèi)型的數(shù)據(jù)。其中有一些在查詢(xún)時(shí)會(huì)有特別的表現(xiàn)。 4.3.1 null null類(lèi)型的行為有點(diǎn)奇...
摘要:但有時(shí)我們希望返回與查詢(xún)條件相匹配的任意一個(gè)數(shù)組元素。首先,可以使用要求同時(shí)使用查詢(xún)條件中的兩個(gè)語(yǔ)句與一個(gè)數(shù)組元素進(jìn)行比較。 上一篇文章:MongoDB指南---7、find簡(jiǎn)介與查詢(xún)條件下一篇文章:MongoDB指南---9、游標(biāo)與數(shù)據(jù)庫(kù)命令 如第2章所述,MongoDB的文檔可以使用多種類(lèi)型的數(shù)據(jù)。其中有一些在查詢(xún)時(shí)會(huì)有特別的表現(xiàn)。 4.3.1 null null類(lèi)型的行為有點(diǎn)奇...
摘要:是在環(huán)境下對(duì)進(jìn)行便捷操作的對(duì)象模型工具安裝一開(kāi)始需要安裝環(huán)境以及數(shù)據(jù)庫(kù),然后創(chuàng)建數(shù)據(jù)文件夾并且啟動(dòng)安裝啟動(dòng)。出錯(cuò)返回符合條件的文檔數(shù)。修改后的標(biāo)題同上取反,刪除一個(gè)字段執(zhí)行后字段不存在增減修改器,只對(duì)數(shù)字有效。 Mongoose是在node.js環(huán)境下對(duì)mongodb進(jìn)行便捷操作的對(duì)象模型工具 安裝 一開(kāi)始需要安裝node.js環(huán)境以及mongodb數(shù)據(jù)庫(kù),然后創(chuàng)建mongdb數(shù)據(jù)文件...
閱讀 2115·2021-11-24 09:39
閱讀 1501·2019-08-30 15:44
閱讀 1951·2019-08-29 17:06
閱讀 3402·2019-08-29 16:32
閱讀 3549·2019-08-29 16:26
閱讀 2660·2019-08-29 15:35
閱讀 3032·2019-08-29 12:50
閱讀 1644·2019-08-29 11:15