A.如何索引"嵌套"及其所有值?
B.我如何为valuetwo编制索引?
{
id: 00000,
attrs: {
nested:{
value: value1,
valuetwo: value2,
}
}
}
Run Code Online (Sandbox Code Playgroud)
我看过这里:http://www.mongodb.org/display/DOCS/Indexes,据我所知的文档,还不清楚索引非嵌套的东西.
Bry*_*isi 60
您创建它们就像在顶级字段上创建索引一样:
db.collection.ensureIndex({"attrs.nested.value": 1})
Run Code Online (Sandbox Code Playgroud)
您需要在每个字段上显式创建索引.
A.要索引"嵌套"中的所有属性,您必须单独索引它们:
db.collection.createIndex({"attrs.nested.value": 1});
db.collection.createIndex({"attrs.nested.valuetwo": 1});
Run Code Online (Sandbox Code Playgroud)
这可以在一个命令中完成:
db.collection.createIndexes([{"attrs.nested.value": 1}, {"attrs.nested.valuetwo": 1}]);
Run Code Online (Sandbox Code Playgroud)
B.仅为"valuetwo"编制索引:
db.collection.createIndex({"attrs.nested.valuetwo": 1})
Run Code Online (Sandbox Code Playgroud)
使用createIndex而不是ensureIndex,因为从3.0.0版开始,ensureIndex已不推荐使用
如果任何索引字段是数组,MongoDB 会自动创建一个多键索引;您不需要显式指定多键类型。
这将适用于两个场景
db.coll.createIndex( { "addr.pin": 1 } )
Run Code Online (Sandbox Code Playgroud)
场景 1 嵌套对象
{
userid: "1234",
addr: {
pin:"455522"
}
},
{
userid: "1234",
addr: {
pin:"777777"
}
}
Run Code Online (Sandbox Code Playgroud)
场景 2 嵌套数组
{
userid: "1234",
addr: [
{ pin:"455522" },
{ pin:"777777" },
]
}
Run Code Online (Sandbox Code Playgroud)
https://docs.mongodb.com/manual/core/index-multikey/