db.products.insert([
{
"product_name" : "Spy Coat",
"product_attributes" : {
"material" : [ "Tweed", "Wool", "Leather" ],
"size" : {
"length" : 72,
"units" : "inches"
}
}
},
{
"product_name" : "Spy Pen",
"product_attributes" : {
"colors" : [ "Blue", "Black" ],
"secret_feature" : {
"name" : "laser",
"power" : "1000",
"units" : "watts",
}
}
},
{
"product_name" : "Spy Book"
}
])
db.products.find()
db.products.createIndex( { "product_attributes.$**" : 1 } )
> db.products.getIndexes()
db.products.find( { "product_attributes.size.length" : { $gt : 60 } } )
> db.products.find( { "product_attributes.material" : "Leather" } ).pretty()
> db.products.find( { "product_attributes.secret_feature.name" : "laser" } ).pretty()
db.products.createIndex( { "product_attributes.$**" : 1,"product_name":1 } )
通配符索引是稀疏的,不索引空字段。因此,通配符索引不能支持查询字段不存在的文档。
db.products.find( {"product_attributes" : { $exists : false } } )
> db.products.find( {"product_attributes" : { $exists : false } } ).explain()
通配符索引为文档或数组的内容生成条目,而不是文档/数组本身。因此通配符索引不能支持精确的文档/数组相等匹配。通配符索引可以支持查询字段等于空文档{}的情况。
> db.products.find({ "product_attributes.colors" : [ "Blue", "Black" ] } )
> db.products.find({ "product_attributes.colors" : [ "Blue", "Black" ] } ).explain()
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://wwwxz.blog.csdn.net/article/details/124561725
内容来源于网络,如有侵权,请联系作者删除!