当查询 MongoDB 子文档时,如果字段名称未知,可以使用索引吗?
mongodbdatabasebig data analytics更新于 2026/1/10 5:37:17
可以,您可以通过索引来实现,例如使用"properties.k"作为键,使用"properties.v"作为值。ensureIndex() 中也使用了相同的方法。
我们先来看一个例子,创建一个包含文档的集合。 −
> db.demo274.insertOne({"details":[{StudentFirstName:"Chris",StudentLastName:"Brown"},
... {StudentFirstName:"David",StudentLastName:"Miller"},
... {StudentFirstName:"John",StudentLastName:"Smith"},
... {StudentFirstName:"John",StudentLastName:"Doe"}
...]
...}
...);
{
"acknowledged" : true,
"insertedId" : ObjectId("5e48de35dd099650a5401a42")
}
借助 find() 方法显示集合中的所有文档 −
> db.demo274.find().pretty();
输出
这将产生以下输出 −
{
"_id" : ObjectId("5e48de35dd099650a5401a42"),
"details" : [
{
"StudentFirstName" : "Chris",
"StudentLastName" : "Brown"
},
{
"StudentFirstName" : "David",
"StudentLastName" : "Miller"
},
{
"StudentFirstName" : "John",
"StudentLastName" : "Smith"
},
{
"StudentFirstName" : "John",
"StudentLastName" : "Doe"
}
]
}
以下是在 MongoDB 子文档查询时使用索引的查询,无需知道字段名称 −
> db.demo274.ensureIndex({"details.StudentFirstName": 1, "details.StudentLastName": 1});
输出
这将产生以下输出 −
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}

