所以我试图运行一个nodejs脚本来对mongo数据库进行一些自定义操作。我面临的问题是使用以下脚本 -
// a valid id obtained before
collection.find({"id":id}, function(err, result) {
if(err) {
console.log("Could not select");
} else {
console.log("Select successful for id: " + id);
console.log(result);
}
});
现在,当我在运行此命令后检查result
时,我只看到有关数据库的数据,其中很多数据都与select查询无关。我想要的是任何人都会期待的! id
的文档列表。显然,我在这里遗漏了一些东西,有人可以指点我吗?
编辑:
因此,当我在mongo shell上运行查询时,我得到了预期的结果。
db.messages.findOne({"id":"<a random id that has a json inserted in mongo>"})
但是,当我从上面显示的脚本中运行它时,我得到的只是:
Select successful for id: <random uid from above>
{ db:
{ domain: null,
_events: {},
_maxListeners: 10,
databaseName: 'test',
serverConfig:
{ domain: null,
_events: [Object],
_maxListeners: 10,
_callBackStore: [Object],
_commandsStore: [Object],
auth: [Object],
_dbStore: [Object],
options: [Object],
_serverState: 'connected',
_haProcess: [Object],
servers: [Object],
strategyInstance: [Object],
emitOpen: false,
.....
.....
.....
由于
答案 0 :(得分:2)
result
为回调提供的find
参数是游标,而不是结果数组。调用toArray
迭代生成的游标并获取一组文档:
collection.find({"id":id}).toArray(function(err, result) {
if(err) {
console.log("Could not select");
} else {
console.log("Select successful for id: " + id);
console.log(result);
}
});
如果id
唯一标识单个文档,请改为使用findOne
:
collection.findOne({"id":id}, function(err, result) {
if(err) {
console.log("Could not select");
} else {
console.log("Select successful for id: " + id);
console.log(result);
}
});