Javascript 需要执行.toArray()以获取键名而不是键值上的mongodb.find()的输出

Javascript 需要执行.toArray()以获取键名而不是键值上的mongodb.find()的输出,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,好的,在这本原著中,我试图只按键名搜索,只输出该名称的值,我可以使用.toArray()来实现这一点,如果我不这样做,那么我将得到大量无关数据的输出。但是,在回调中使用数据是很乏味的,因为它在一个数组中,而不应该在数组中 一些例子。这两者的区别是什么。前者提供了一个不使用.toArray()的输出,而后者如果删除.toArray(),则得到不相关的数据作为输出 以前的 collection.findOne({"username" : username}, function(err, result

好的,在这本原著中,我试图只按键名搜索,只输出该名称的值,我可以使用.toArray()来实现这一点,如果我不这样做,那么我将得到大量无关数据的输出。但是,在回调中使用数据是很乏味的,因为它在一个数组中,而不应该在数组中

一些例子。这两者的区别是什么。前者提供了一个不使用.toArray()的输出,而后者如果删除.toArray(),则得到不相关的数据作为输出

以前的

collection.findOne({"username" : username}, function(err, result) {
            console.log(result);
            callback(err, result);
            db.close();
        });
collection.find({},{"credentials":1}).toArray(function(err, result) {
            callback(err, result);
            db.close();
        });
后者

collection.findOne({"username" : username}, function(err, result) {
            console.log(result);
            callback(err, result);
            db.close();
        });
collection.find({},{"credentials":1}).toArray(function(err, result) {
            callback(err, result);
            db.close();
        });
还有,为什么当包含多个参数时,如用户Alok Deshwal的原始问题a答案中的“凭证”:1、“用户名”:0、“用户名”:0,您会得到错误

MongoError:无法规范化查询:BadValue投影不能同时包含和排除。

因此,我想底线是如何在不使用
.toArray()

使用.toArray()获得的输出

输出我想要的

{
    _id: 56378e258300a47301b151ed,
    credentials: {
        password: '05c9f953969c7478fab0c5495b50d356ae9205c62ff41bab4d7891b804c1f369',
        randomSalt: '09973bc8109a9f6255f63e96528f5cf8ef74248192c60121159781f5d1f5f264'
    }
}

该错误意味着您不能混合包含和排除键(\u id未考虑)。准确地说,你可以继续

"credentials":0,"_id":0,"username":0

不允许混合包含和排除。您可以参考。接下来是cursor.toArray()的第二部分替代项,它们将使用next

cursor.next(function(err,result){
   if (result)
      //Returns the next document in a cursor.
})
或使用以下每种方法

cursor.each(function(err,result){
    if(result){
       //each document in cursor
    }
})

令人惊叹的!.next().each()和.toArray()在性能方面是否有什么不同?哪一个更快?您可以参考以下内容。这三个都会将文档加载到客户端,所以性能应该不会有太大差异。谢谢!当我问我最初的问题时,你在哪里!哈哈!别担心!很乐意帮忙!