如何在 mongodb 控制台中使用 set(data structure)?

How to use set(data structure) in mongodb console?

据我所知,mongodb 控制台有一个集成的 javascript 解释器,所以我的问题是为什么这段代码在有效 javascript 时不起作用:

//db = connect("localhost:27017/tecnicas")

function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

diaFavorito = ["lunes", "martes", "miercoles", "sabado"]
sexo = ["hombre", "mujer"];
heladoFavorito = ["vainilla", "chocolate", "fresa", "coco"]

for(i = 0; i < 20; i++){
    print(db.usuarios.insert({
        fday: diaFavorito[getRandomInt(0, diaFavorito.length-1)],
        genero: sexo[getRandomInt(0, sexo.length-1)],
        fice: heladoFavorito[getRandomInt(0, heladoFavorito.length-1)],
        indice: i+1,
        ingresos: getRandomInt(12000, 120000)
    }))
}

// SECOND PART

paises = ["Mexico", "USA", "Portugal", "Nepal", "Argelia", "Chile"]
for(i = 0; i < 20; i++){
    numeroDePaisesVisitados = getRandomInt(1,6)
    var misPaisesVisitados = new Set(); // THE ERROR OCCURS HERE
    while(misPaisesVisitados.size != numeroDePaisesVisitados){
        misPaisesVisitados.add(
            paises[getRandomInt(0,paises.length-1)]
        )
    }
    var miArregloDePaisesVisitados = Array.from(misPaisesVisitados)
    print(db.usuarios.update(
        {indice:i+1},
        {$set: {paisesVisitados: miArregloDePaisesVisitados}}
    ))
}

错误信息是:

ReferenceError: Set is not defined

ECMAScript.

您只能使用已定义的内置函数,Set() 不是其中之一。您只需要一个普通对象并像这样设置它的键:

var misPaisesVisitados = {};
while(misPaisesVisitados.size != numeroDePaisesVisitados){
  misPaisesVisitados[paises[getRandomInt(0,paises.length-1)]] = 1;
}
var miArregloDePaisesVisitados = Object.keys(misPaisesVisitados);

对象将只有唯一键(或 "set" ),然后您从对象中提取那些唯一键名称。