MongoDB 集合欄位匹配查詢方法
https://blog.csdn.net/fdipzone/article/details/78386123
MongoDB是基於分散式檔案儲存的資料庫,本文將介紹如何對MongoDB記錄中集合欄位進行匹配查詢。
1.建立測試資料庫
use testdb
db.createUser(
{
"user":"root",
"pwd":"123456",
"roles":[{"role" : "readWrite", "db":"testdb"}]
}
)
db.auth(
{
"user":"root",
"pwd":"123456"
}
)
2.插入測試資料,area_id為集合欄位
db.member.insert([
{
"id" : 1,
"name" : "fdipzone",
"area_id" : [1,2,3],
},
{
"id" : 2,
"name" : "tom",
"area_id" : [3,4],
},
{
"id" : 3,
"name" : "polly",
"area_id" : [1,3,7],
},
{
"id" : 4,
"name" : "anslem",
"area_id" : [2,4,6],
},
{
"id" : 5,
"name" : "terry",
"area_id" : [4,5,9],
}
])
查詢插入的資料
db.member.find();
{ "_id" : ObjectId("59f589f5641e44b4c51cb770"), "id" : 1, "name" : "fdipzone", "area_id" : [ 1, 2, 3 ] }
{ "_id" : ObjectId("59f589f5641e44b4c51cb771"), "id" : 2, "name" : "tom", "area_id" : [ 3, 4 ] }
{ "_id" : ObjectId("59f589f5641e44b4c51cb772"), "id" : 3, "name" : "polly", "area_id" : [ 1, 3, 7 ] }
{ "_id" : ObjectId("59f589f5641e44b4c51cb773"), "id" : 4, "name" : "anslem", "area_id" : [ 2, 4, 6 ] }
{ "_id" : ObjectId("59f589f5641e44b4c51cb774"), "id" : 5, "name" : "terry", "area_id" : [ 4, 5, 9 ] }
3.使用$in進行查詢
查詢area_id含有1的記錄
db.member.find({"area_id":{$in:[1]}});
{ "_id" : ObjectId("59f589f5641e44b4c51cb770"), "id" : 1, "name" : "fdipzone", "area_id" : [ 1, 2, 3 ] }
{ "_id" : ObjectId("59f589f5641e44b4c51cb772"), "id" : 3, "name" : "polly", "area_id" : [ 1, 3, 7 ] }
注意,$in只能檢查集合內每一個元素是否匹配,只要任意一個匹配就返回記錄,並不能檢查同時匹配多個元素的情況。
例如要查詢area_id同時包含2和4的記錄,使用$in只會查詢出含有2或4的記錄。
db.member.find({"area_id":{$in:[2,4]}});
{ "_id" : ObjectId("59f58ddfa874fe2b3da340bf"), "id" : 1, "name" : "fdipzone", "area_id" : [ 1, 2, 3 ] }
{ "_id" : ObjectId("59f58ddfa874fe2b3da340c0"), "id" : 2, "name" : "tom", "area_id" : [ 3, 4 ] }
{ "_id" : ObjectId("59f58ddfa874fe2b3da340c2"), "id" : 4, "name" : "anslem", "area_id" : [ 2, 4, 6 ] }
{ "_id" : ObjectId("59f58ddfa874fe2b3da340c3"), "id" : 5, "name" : "terry", "area_id" : [ 4, 5, 9 ] }
4.使用$all進行查詢
$all可以檢查同時匹配多個元素的情況
查詢area_id同時含有2和4的記錄
db.member.find({"area_id":{$all:[2,4]}});
{ "_id" : ObjectId("59f58ddfa874fe2b3da340c2"), "id" : 4, "name" : "anslem", "area_id" : [ 2, 4, 6 ] }