对MongoDB的一些基础知识感到困惑

对MongoDB的一些基础知识感到困惑,mongodb,Mongodb,我目前正在学习“learnyoumongo”教程的第三课,目前对process.argv与当前教程的关系感到困惑 本教程的目标是使用名为“learnyoumongo”的数据库。 Mongod设置为默认端口27017。 我需要使用“parrots”集合查找“age”大于传递给脚本的第一个参数的所有文档 解决这一挑战的办法如下 var mongo = require('mongodb').MongoClient var age = process.argv[2] var url = 'mongod

我目前正在学习“learnyoumongo”教程的第三课,目前对process.argv与当前教程的关系感到困惑

本教程的目标是使用名为“learnyoumongo”的数据库。 Mongod设置为默认端口27017。 我需要使用“parrots”集合查找“age”大于传递给脚本的第一个参数的所有文档

解决这一挑战的办法如下

var mongo = require('mongodb').MongoClient
var age = process.argv[2]

var url = 'mongodb://localhost:27017/learnyoumongo'

mongo.connect(url, function(err, db) {
  if (err) throw err
  var parrots = db.collection('parrots')
  parrots.find({
    age: {
      $gt: +age
    }
  }).toArray(function(err, docs) {
    if (err) throw err
    console.log(docs)
    db.close()
  })
})

我对第二行感到困惑。我们将变量age设置为process.argv[2]。然而,当我尝试将其记录到console.log时,我收到null。它应该是空的吗?process.argv在Mongo中经常使用吗??欢迎任何意见

process.argv属性返回一个数组,其中包含启动nodejs进程时传递的命令行参数

例如,如果您的文件名为index.js,并按如下方式启动它:

node index.js 20

如果要创建数组,请执行以下操作:

argv[0] => /usr/local/bin/node
argv[1] => /path_to_node_folder/index.js
argv[2] => 20
因此,在启动节点时,基本上是在命令提示符中将年龄作为参数传递

在您的情况下,您正在通过年龄作为参数,然后将在内部用于您的逻辑。因此,要在控制台日志中具有age值,请在启动节点文件时传递该值,如下所示:

node yourFile.js 10

其中10岁是我已经过的年龄。

OOOOO现在说得通了!谢谢你!