定义复合索引:
db.collection.ensureIndex( { orderDate: 1, zipcode: -1 } )
我突然意识到:JS对象的字段是否有序? 是否有一个隐含的假设,即orderDate首先出现?我很惊讶它并没有使用数组。
对于猫鼬,我们使用:
schema.index({a:1, b:1})
我们如何确保使用代码中指定的字段将此对象传输到mongo服务器?
这篇文章说没有订购字段。 Does JavaScript Guarantee Object Property Order?
Is it acceptable style for Node.js libraries to rely on object key order?
答案 0 :(得分:1)
索引以升序(1)或降序(-1)排序顺序存储对字段的引用。对于单字段索引,键的排序顺序无关紧要,因为MongoDB可以在任一方向上遍历索引。但是,对于复合索引,排序顺序可以决定索引是否可以支持排序操作。
因此,如果您使用
创建了索引db.collection.ensureIndex( { orderDate: 1, zipcode: -1 } )
该对象将被传送到mongo服务器,其中包含有序的字段,并注意使用
db.collection.ensureIndex( { orderDate: 1, zipcode: -1 } )
和
db.collection.ensureIndex( { zipcode: -1 , orderDate: 1} )
将创建两个不同的复合索引