2

mongo 索引文档说,对于复合索引,字段的顺序非常重要:索引只能支持使用字段的任何前缀的查询:http: //docs.mongodb.org/manual/core/indexes/

Meteor 目前在服务器端有对 MongoDBensureIndex的直通。Collection._ensureIndex

但是,当在 Javascript 中传递参数时Collection._ensureIndex,这些字段会变成 Javascript 对象。我们是否可以保证 Mongo 会以相同的顺序阅读它们?如果不是,那么设置此索引的正确方法是什么?

这可能与 JS 对象的存储方式有关。它们是关联数组,还是保持它们的属性有序?

4

2 回答 2

2

Javascript 没有指定对象上参数的顺序,但 V8 至少对 node.js 这样做了,参数始终按照它们添加到对象的顺序。

所以如果你这样做

var a = {a:1, b:1, c:1}
var keys = Object.keys(a)

返回

[ 'a', 'b', 'c' ]
于 2013-08-12T13:03:33.347 回答
1

不用担心这个,这应该可以正常工作。您可以通过检查 MongoDB shell 上的索引来轻松查看它是否有效:

mongo yourdb
db.collectionName.getIndexes();
于 2013-07-30T08:09:17.620 回答