好吧,所以在这个原始的 question 中,我试图仅按键名进行搜索,并且仅输出该名称的值,我能够通过使用 .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();
});
还有为什么当包含多个参数时,即 "credentials":1,"_id":0,"username":0 如原始问题 a用户 Alok Deshwal 的回答,您收到错误了吗?
MongoError:无法规范化查询:BadValue Projection 不能混合包含和排除。
所以我想底线是如何在不使用 .toArray()
我使用 .toArray() 得到的输出。
[{
_id: 5636e00c09431db4560ef063,
credentials: {
password: '120bfeae7386165304b1cce4755a5c509593cc9157f58bac9d6f03e2230421cf',
randomSalt: '00dfb37635ba7e5a513f9fd6e8bdf746f85ec3571df8288e1fdb44f399e331f0'
}
}]
我想要的输出。
{
_id: 56378e258300a47301b151ed,
credentials: {
password: '05c9f953969c7478fab0c5495b50d356ae9205c62ff41bab4d7891b804c1f369',
randomSalt: '09973bc8109a9f6255f63e96528f5cf8ef74248192c60121159781f5d1f5f264'
}
}
最佳答案
该错误意味着您不能混合包含和排除键(不考虑_id)。准确地说,您可以继续
"credentials":0,"_id":0,"username":0
或
"credentials":1,"_id":0,"username":1
不允许混合包含和排除。您可以引用https://docs.mongodb.org/manual/tutorial/project-fields-from-query-results/为了那个原因。来到第二部分 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
}
})
关于javascript - 需要执行 .toArray() 以在键名而非值上获取 mongodb .find() 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33505819/
当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/
我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass
我注意到像bundler这样的项目在每个specfile中执行requirespec_helper我还注意到rspec使用选项--require,它允许您在引导rspec时要求一个文件。您还可以将其添加到.rspec文件中,因此只要您运行不带参数的rspec就会添加它。使用上述方法有什么缺点可以解释为什么像bundler这样的项目选择在每个规范文件中都需要spec_helper吗? 最佳答案 我不在Bundler上工作,所以我不能直接谈论他们的做法。并非所有项目都checkin.rspec文件。原因是这个文件,通常按照当前的惯例,只
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
我遵循了教程http://gettingstartedwithchef.com/,第1章。我的运行list是"run_list":["recipe[apt]","recipe[phpap]"]我的phpapRecipe默认Recipeinclude_recipe"apache2"include_recipe"build-essential"include_recipe"openssl"include_recipe"mysql::client"include_recipe"mysql::server"include_recipe"php"include_recipe"php::modul
我在用Ruby执行简单任务时遇到了一件奇怪的事情。我只想用每个方法迭代字母表,但迭代在执行中先进行:alfawit=("a".."z")puts"That'sanalphabet:\n\n#{alfawit.each{|litera|putslitera}}"这段代码的结果是:(缩写)abc⋮xyzThat'sanalphabet:a..z知道为什么它会这样工作或者我做错了什么吗?提前致谢。 最佳答案 因为您的each调用被插入到在固定字符串之前执行的字符串文字中。此外,each返回一个Enumerable,实际上您甚至打印它。试试
如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Rubysyntaxquestion:Rational(a,b)andRational.new!(a,b)我正在阅读ruby镐书,我对创建有理数的语法感到困惑。Rational(3,4)*Rational(1,2)产生=>3/8为什么Rational不需要new方法(我还注意到例如我可以在没有new方法的情况下创建字符串)?
//1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions