Azure函数:
module.exports = async function (context, req) {
await client.connect();
const database = client.db("crud");
const collection = database.collection("moments");
let obj = await collection.aggregate([{$sample:{ size: 3 }}]).toArray();
if (!obj) {
return context.res = {
status: 400,
body: "not found"
};
}
return context.res = {
status: 200, /* Defaults to 200 */
body: obj
};
}
我每次都从db.collection
获得相同的记录(前3)。
如果查询没有toArray()
方法,返回:
{
"_events": {},
"_eventsCount": 0
}
我似乎找不到原因。
$sample仍然不能像预期的那样与Azure Cosmos DB MongoDB API一起工作,应该在不久的将来修复,但是我们可以使用下面的东西来获得文档的随机列表:
db.collection.find().limit(3).skip(Math.random()*db.collection.count())
在MongoDB中查找随机文档
好像是AnuragSharma提到的Azure Cosmo DB的bug。
通过使用集合count和Math.random.
管理手动解决方案