Observação:a pergunta mudou - veja as atualizações abaixo.
Resposta original:
Sim.
Ao invés de:
db.tableName.find({ col: 'value' })
Você usa como:
db.collection('tableName').find({ col: 'value' }, (err, data) => {
if (err) {
// handle error
} else {
// you have data here
}
});
Veja:http://mongodb.github.io /node-mongodb-native/2.2/api/Collection.html#find
Atualizar
Depois que você mudou sua pergunta e postou alguns comentários fica mais claro o que você quer fazer.
Para atingir seu objetivo de emular o shell Mongo no Node, você precisaria analisar o comando digitado pelo usuário e executar o comando apropriado, tendo em mente:
- a diferença entre SpiderMonkey usado pelo shell Mongo e Node com V8 e libuv
- a diferença entre BSON e JSON
- o fato de que o shell Mongo funciona de forma síncrona e o driver Node funciona de forma assíncrona
A última parte provavelmente será a parte mais difícil para você. Lembre-se que no shell Mongo isso é perfeitamente legal:
db.test.find()[0].x;
No Node o
.find()
O método não retorna o valor, mas recebe um retorno de chamada ou retorna uma promessa. Será complicado. O db.test.find()[0].x;
case pode ser relativamente fácil de lidar com promessas (se você entender bem as promessas), mas isso será mais difícil:db.test.find({x: db.test.find()[0].x});
e lembre-se de que você precisa lidar com níveis aninhados arbitrariamente.
O protocolo Mongo
Depois de ler alguns dos comentários, acho que vale a pena notar que o que você realmente envia para o servidor Mongo não tem nada a ver com o JavaScript que você escreve no shell do Mongo. O shell Mongo usa SpiderMonkey com várias funções e objetos predefinidos.
Mas você não envia JavaScript para o servidor Mongo, então não pode enviar coisas como
db.collection.find()
. Em vez disso, você envia um binário OP_QUERY
struct com um nome de coleção codificado como um cstring e uma consulta codificada como BSON mais um monte de sinalizadores binários. Ver:O próprio BSON é um formato binário com vários valores de baixo nível definidos como bytes:
A linha inferior é que você não envia para o servidor Mongo nada parecido com o que você insere no shell do Mongo. O shell Mongo analisa as coisas que você digita usando o analisador SpiderMonkey e envia solicitações binárias para o servidor Mongo real. O shell Mongo usa JavaScript, mas você não se comunica com o servidor Mongo em JavaScript.
Exemplo
Mesmo o objeto de consulta JSON não é enviado ao Mongo como JSON. Por exemplo, quando você está procurando por um documento com um
hello
propriedade igual a "world" você usaria {hello: 'world'}
em JavaScript ou {"hello": "world"}
em JSON, mas é isso que é enviado para o servidor Mongo - pelo shell Mongo ou por qualquer outro cliente Mongo:\x16\x00\x00\x00\x02hello\x00\x06\x00\x00\x00world\x00\x00
Por que é tão diferente
Para entender por que a sintaxe usada no Node é tão diferente do shell do Mongo, veja esta resposta: