上一篇博客中,我们学会了最基础的查询方法。即按照某一个属性,使用最简单的属性匹配方式查询。这一篇博客中我们来讲一下文档内部嵌套属性的查询以及对于数组的查询。
嵌入文档查询
使用场景:如果一个文档内部有层级关系,此时想要根据内部属性进行查找
例子:如果一个文档格式为
{
"favorite":{
"sport":"soccer",
"fruit":"apple"
}
}
此时想要通过fruit=apple进行查询,则此时应该用
db.test.find({"favorite.fruit":"apple"})
此处.表示向下一个层级。注:有层级操作的时候key值必须要加引号
数组查询
使用场景 :如果一个文档内部结构中,存在数组结构,且需要针对这个数组进行查询操作。
例子:文档格式:
{
"favorite":{
"sport":"soccer",
"fruit":["apple","peach"]
}
}
这个例子中的数组是在文档内部的,这样子我们就可以把上面的查询方式结合起来。
精确查询
db.test.find({"favorite.fruit":["apple","peach"]})
查询语句的value必须跟数组一模一样,顺序也不能够调换
如果查询语句是这样:
db.test.find({"favorite.fruit":["peach","apple"]})
则会查询不出
匹配单个元素
db.test.find({"favorite.fruit":"apple"})
可以看出在匹配单个元素的时候,不需要加数组符号([])
匹配数组中某个指定的元素(某个指定位置的元素)
db.test.find({"favorite.fruit.1":"peach"})
上述语句表示查询条件为 数组的第二个元素为peach