const random = Math.floor((Math.random()*10)+1) // Or wathever to get the random number
let query = {"$facet":{}}
for(let i = 1 ; i <= random; i++){
const difficulty_level = `difficulty_level_${i}`
query["$facet"][difficulty_level] = [
{ $match: { difficulty_level: i }},
{ $sample: { size: 1 }}
]
}
console.log(query) // This output can be used in mongoplayground and it works!
// To use the query you can use somethiing like this (or other way you call the DB)
this.db.aggregate([query])
1条答案
按热度按时间44u64gxh1#
如果我没理解错的话,你可以试试这样的方法:
此处的目标是创建查询like this example
这个查询使用$sample得到两个随机元素,一个用于
level1
,另一个用于level2
,使用$facet可以得到多个结果。所以关键是要以动态的方式进行这个查询,所以你可以使用JS来创建对象查询,并把它传递给mongo调用。