Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js:如何知道值是否在MongoDB数据库的集合中?_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript Node.js:如何知道值是否在MongoDB数据库的集合中?

Javascript Node.js:如何知道值是否在MongoDB数据库的集合中?,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,这一定是一个非常简单的问题,但我找不到一个方法来解决 我有一个非常基本的MongoDB文档集合,可以用JSON格式表示,如下所示: myDatabase.myCollection = { {hashkey: "hashkey1", data: "someData" }, {hashkey: "hashkey2", data: "someData" }, {hashkey: "hashkey3", data: "someData" } } 每个hashk

这一定是一个非常简单的问题,但我找不到一个方法来解决

我有一个非常基本的MongoDB文档集合,可以用JSON格式表示,如下所示:

myDatabase.myCollection = {
  {hashkey: "hashkey1",
   data: "someData"
  },
  {hashkey: "hashkey2",
   data: "someData"
  },
  {hashkey: "hashkey3",
   data: "someData"
  }
}
每个hashkey值都是唯一的

现在,我想在Node.js中编写以下代码:

// I use npm mongodb, sounds good ?
var mongodb = require('mongodb');

// initiating connection to myDatabase...

var db = "my_database_I_just_connected_to";
var myCollection = db.collection('myCollection');

var newHashkey = "hashkeyX";

if ("newHashkey_is_already_in_myCollection") {
  doSomething();
} else {
  doSomethingElse();
}
我正在寻找一种方法来获取布尔值“newHashkey已经在我的集合中”。使用我的示例数据库:

  • 如果“hashkeyX”==“hashkey1”-->true
  • 如果“hashkeyX”==“hashkey5”------>false
我一定是瞎了,但我找不到一个直接的功能来达到这个目的。我已经尝试了很多方法使用选择器,计算返回的文档,试图理解游标和对象。。。不行。我最初的想法是:

if (myCollection.findOne({hashkey: "hashkeyX"}) === null) {
  doSomething();
} else {
  doSomethingElse();
}
1) 获取此类布尔值的最佳方法是什么


2) [可选:]你能给我链接一些关于这些问题的好解释吗?

如果你能像这样表示数据:

myDatabase.myCollection = {
  "hashkey1": {
   data: "someData"
  },
  "hashkey2": {
   data: "someData"
  },
  "hashkey2": {
   data: "someData"
  }
}
然后你可以这样做:

if (db.collection(newHashkey)) {
  doSomething();
} else {
  doSomethingElse();
}

findOne
是一个异步操作,您必须使用回调并检查对象是否存在:

myCollection.findOne({hashkey: "hashkeyX"}, function(err, obj) {
  if (err) {
    // TODO: process error
  }
  if (obj) {
    doSomething();
  } else {
    doSomethingElse();
  }

这是合乎逻辑的。作为Node的新手,我经常犯回调错误。。。那么其他的答案呢?行不通?请查看node.js mongodb官方文档,它可能会有所帮助:异步功能强大、美观,需要我改变我的思维方式。。。它工作完美,感谢链接,我只有npm mongodb自述文件。。。谢谢!Np:),我还建议您尝试使用
mongoose
ODM来处理mongodb。我不明白“.myCollection(newHashkey)”。它应该在Node.js/mongodb模块中工作吗?我没有按照我想要的方式编写它。我纠正了它。