在MongoDB中,如果我在字段"color"中存储一个数组(比如["red", "blue"]),它会索引"red""blue"以便我可以查询"red",或者在{"red", "blue"}中生成一个复合索引?

推荐答案

对于索引数组,MongoDB会对数组的每个值进行索引,这样您就可以查询单个项,例如"red"例如:

> db.col1.save({'colors': ['red','blue']})
> db.col1.ensureIndex({'colors':1})

> db.col1.find({'colors': 'red'})
{ "_id" : ObjectId("4ccc78f97cf9bdc2a2e54ee9"), "colors" : [ "red", "blue" ] }
> db.col1.find({'colors': 'blue'})
{ "_id" : ObjectId("4ccc78f97cf9bdc2a2e54ee9"), "colors" : [ "red", "blue" ] }

有关更多信息,请查看MongoDB关于Multikeys:http://www.mongodb.org/display/DOCS/Multikeys的文档

Mongodb相关问答推荐

在出现错误时忽略mongodb事务回滚是好做法吗

最有效的Mongo聚合来展开和过滤:匹配、展开、匹配与投影和过滤

如何用Python和MongoDB找到单据字段的最大值?

如何填充Mongoose中的嵌套引用

当日期和时间在不同键的字符串中时,Mongo 查询过滤今天的数据

Mongo查找条件:不存在

MongoDB - 来自先前匹配文档的聚合匹配字段

如何 db.getUser() 使用 go mongo-driver

从 MongoDB 中的聚合结果中获取不同的值

根据条件删除一些数组元素并将数组的大小更新为mongo中的另一个文件

TypeError:Cannot read property '_id' of undefined

Mongo 无法启动

返回从循环中调用的数据库查询中检索到的数据的问题

从 MongoDB find() 结果集中识别最后一个文档

NodeJS中的密码重置

如何在 Node.js 中格式化 Mongoose 的日期?

TypeError: object of type 'Cursor' has no len()

使用 Spring Security + Spring 数据 + MongoDB 进行身份验证

Mongo按实际上是数字的字符串值排序

mongoose — 判断 ObjectId 是否存在于数组中