这一定是一个非常简单的问题,但我无法找到办法......
我有一个非常基本的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_is_already_in_myCollection"。使用我的示例数据库:
我必须是盲目的,但我无法为此找到直接的功能。我已经尝试了许多使用选择器的方法,计算返回的文档,试图理解游标与对象......不管怎样。我最初的想法是:
if (myCollection.findOne({hashkey: "hashkeyX"}) === null) {
doSomething();
} else {
doSomethingElse();
}
1)获得这样一个布尔值的好/最佳方法是什么?
2)[可选:]你能否将我与这些问题的一些好的解释联系起来?
答案 0 :(得分:3)
findOne
是一个异步操作,你必须使用回调并检查那里是否存在对象:
myCollection.findOne({hashkey: "hashkeyX"}, function(err, obj) {
if (err) {
// TODO: process error
}
if (obj) {
doSomething();
} else {
doSomethingElse();
}
答案 1 :(得分:0)
如果你能代表这样的数据:
myDatabase.myCollection = {
"hashkey1": {
data: "someData"
},
"hashkey2": {
data: "someData"
},
"hashkey2": {
data: "someData"
}
}
然后你可以这样做:
if (db.collection(newHashkey)) {
doSomething();
} else {
doSomethingElse();
}