Azure cosmosdb CosmosDB Mongo API复合唯一索引是否要求每个字段都是唯一的?

Azure cosmosdb CosmosDB Mongo API复合唯一索引是否要求每个字段都是唯一的?,azure-cosmosdb,unique-constraint,node-mongodb-native,azure-cosmosdb-mongoapi,compound-index,Azure Cosmosdb,Unique Constraint,Node Mongodb Native,Azure Cosmosdb Mongoapi,Compound Index,我正在尝试设置一个版本化文档集合,每当进行编辑操作时,我都会在其中插入一个具有相同id和时间戳的新文档。我在id和timestamp字段上使用了一个唯一的复合索引。每当我尝试将一个id不同但时间戳相同的文档插入另一个文档时,CosmosDB都会给我MongoError:E11000重复键错误。MongoDB文档说我应该能够做到这一点: 还可以对复合索引强制执行唯一约束。如果对复合索引使用unique约束,那么MongoDB将对索引键值的组合强制唯一性 我尝试使用非唯一索引,但资源管理器模板失败

我正在尝试设置一个版本化文档集合,每当进行编辑操作时,我都会在其中插入一个具有相同id和时间戳的新文档。我在id和timestamp字段上使用了一个唯一的复合索引。每当我尝试将一个id不同但时间戳相同的文档插入另一个文档时,CosmosDB都会给我
MongoError:E11000重复键错误
。MongoDB文档说我应该能够做到这一点:

还可以对复合索引强制执行唯一约束。如果对复合索引使用unique约束,那么MongoDB将对索引键值的组合强制唯一性

我尝试使用非唯一索引,但资源管理器模板失败,表示不支持非唯一复合索引。我正在使用node.js本机驱动程序
v3.2.4
。我还尝试使用Azure Portal插入文档,但收到了相同的错误。这让我相信CosmosDB和node.js驱动程序之间没有问题

这里有一个小例子来说明这个问题。我使用节点
v10.15.3
运行它

const{MongoClient}=require('mongodb');
const mongoUrl=process.env.COSMOSDB_连接_字符串;
const collectionName='indextest';
const client=newmongoclient(mongoUrl,{useNewUrlParser:true});
让连接;
const testIndex=async()=>{
const now=Date.now();
connection=wait client.connect();
const db=connection.db('master');
等待db.collection(collectionName.drop();
const collection=await db.createCollection(collectionName);
wait collection.createIndex({id:1,ts:-1},{unique:true});
insertOne({id:1,ts:now,title:'我的第一个文档'});
wait collection.insertOne({id:2,ts:now,title:'My other document'});
};
(异步()=>{
试一试{
等待测试索引();
console.log('It works');
}捕捉(错误){
控制台错误(err);
}最后{
等待连接。关闭();
}
})();
我希望两个insert操作都能正常工作,程序退出时
也能正常工作
。我得到的是一个错误:

{MongoError:E11000重复密钥错误集合:master.indextest失败\u id或唯一密钥约束
在Function.create(/home/node/node_modules/mongodb core/lib/error.js:43:12)
错误(/home/node/node_modules/mongodb/lib/utils.js:149:22)
在coll.s.topology.insert(/home/node/node_modules/mongodb/lib/operations/collection_ops.js:859:39)
at处理程序(/home/node/node_modules/mongodb core/lib/topologies/replset.js:1155:22)
at/home/node/node_modules/mongodb core/lib/connection/pool.js:397:18
在进程中。_tick回调(内部/process/next_tick.js:61:11)
司机:是的,
名称:“MongoError”,
索引:0,
代码:11000,
错误消息:
“E11000重复密钥错误集合:master.indextest失败\u id或唯一密钥约束”,
[符号(mongoErrorContextSymbol)]:{}
这是预期的行为还是CosmosDB的MongoDB API中的错误