我正在使用mongoid.yml中的以下设置(不起作用),并且我已正确地将MONGOLAB_URI环境变量添加到我的heroku环境中:
production:
sessions:
default:
another:
uri: <%= ENV['MONGOLAB_URI'] %>
Run Code Online (Sandbox Code Playgroud)
我也尝试了以下不起作用:
production:
uri: <%= ENV['MONGOLAB_URI'] %>
Run Code Online (Sandbox Code Playgroud)
这也行不通:
production:
sessions:
default:
uri: <%= ENV['MONGOLAB_URI'] %>
Run Code Online (Sandbox Code Playgroud)
我在heroku推送时遇到以下错误:
Running: rake assets:precompile
There is a configuration error with the current mongoid.yml.
Problem:
No database provided for session configuration: :default.
Summary:
Each session configuration must provide a database so Mongoid knows where the default database to persist to. What was provided was: {"another"=>{"uri"=>nil}}.
Resolution:
If configuring via a …Run Code Online (Sandbox Code Playgroud) 我有一个非常通用的验证器,我想传递它的参数.
这是一个示例模型:
class User
include Mongoid::Document
field :order_type
has_many :orders, inverse_of :user
validates: orders, generic: true #i want to pass argument (order_type)
field :task_type
has_many :tasks, inverse_of :user
validates: tasks, generic: true #i want to pass argument (task_type)
end
Run Code Online (Sandbox Code Playgroud)
和示例验证器:
class GenericValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
if some_validation?(object)
object.errors[attribute] << (options[:message] || "is not formatted properly")
end
end
end
Run Code Online (Sandbox Code Playgroud)
有没有办法将参数传递给验证器,具体取决于验证哪个字段?
谢谢
我在mongoid 3.1.0和最新3.1.3的rails中试过这样的东西..limit不起作用.下面它应该返回1行,但它返回所有(4)
码:
@go = Gallery.limit(1)
logger.info "count: #{@go.count}"
Run Code Online (Sandbox Code Playgroud)
输出:
count: 4
MOPED: 54.234.11.193:10055 QUERY database=mongohqtestdatabase collection=galleries selector= {"$query"=>{}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=-1 skip=0 batch_size=nil fields=nil (276.2010
Run Code Online (Sandbox Code Playgroud)
女士)
哪个版本的mongoid与limit()有关?
我有这个问题:
User.or( { name: 'John' }, { name: 'Sara' } ).or( { age: 17 }, { age: 18 } ) )
Run Code Online (Sandbox Code Playgroud)
它返回下一个标准:
#<Mongoid::Criteria
selector: {"enabled"=>true, "$or"=>[{"name"=>"John"}, {"name"=>"Anoun"}, {"age"=>17}. {"age"=>18}]}
options: {}
class: User
embedded: false>
Run Code Online (Sandbox Code Playgroud)
但我想做'和'两个'或'返回这样的东西:
#<Mongoid::Criteria
selector: {"enabled"=>true, "$and"=>[
{"$or"=>[{"name"=>"John"}, {"name"=>"Anoun"}]},
{"$or"=>[{"age"=>17}, {"age"=>18}]}
] }
options: {}
class: User
embedded: false>
Run Code Online (Sandbox Code Playgroud)
怎么会是查询?
我是mongodb和堆栈溢出的新手.
我想知道为什么mongodb集合ID是24个十六进制字符?这有什么重要意义?
据说这个问题已解决了最新版本的轻便摩托车但仍然在我身上发生.我有一个带有Mongoid的rails 4.2应用程序,为具有readWrite和dbOwner角色的MongoDB DB创建了一个用户,并在mong.conf文件中设置了auth = true.
我可以使用Mongo shell或使用Mongo驱动程序的简单Java应用程序,使用该用户凭据对数据库执行任何操作.
但是,当尝试使用Mongoid进行身份验证时,我总是会收到此错误:
失败,错误13:"未授权查询my_db.my_collection"
这是我的mongoid.yml文件的相关部分:
production:
# Configure available database sessions. (required)
sessions:
# Defines the default session. (required)
default:
# Defines the name of the default database that Mongoid can connect to.
# (required).
database: my_db
hosts:
- localhost:27017
username: my_username
password: my_password
Run Code Online (Sandbox Code Playgroud)
我也尝试用服务器的远程地址替换主机并远程访问它(这与禁用的身份验证选项一起使用)没有成功.为了它的价值,我可以通过调试mpped/node.rb文件看到凭证,在ensure_connected方法中我看到@credentials变量包含我的用户名和密码我在这里缺少什么?谢谢!
在MongoDB shell中,如果我执行以下操作,则会创建索引,并且还会阻止插入重复记录:
db.analytics.ensureIndex({page: 1, some_id: 1, ga_date: -1}, {unique: true});
Run Code Online (Sandbox Code Playgroud)
但我认为Mongoid也可以这样做:http://mongoid.org/docs/indexing/
所以我有:
class PageAnalytic < Analytic
include Mongoid::Document
field :page, :type => String
field :some_id, :type => Integer
field :ga_date, :type => Time
field :pageviews, :type => Integer
field :timeOnPage, :type => Integer
index(
[
[ :page, Mongo::ASCENDING ],
[ :some_id, Mongo::ASCENDING ],
[ :ga_date, Mongo::DESCENDING ]
],
:unique => true
)
end
Run Code Online (Sandbox Code Playgroud)
做一个
rake db:create_indexes
Run Code Online (Sandbox Code Playgroud)
但是,是否可以插入重复记录?
更新:这很奇怪,但是我在MongoDB shell中添加了索引并删除了集合,然后在MongoDB Shell或Mongoid中重新创建了索引,现在我可以将集合放到MongoDB shell中,然后rake创建索引,并使用mongoid两次添加相同的文档,mongod会说重复键的错误.
advertisers = db.dbname.find( 'my query which returns things correctly' );
Run Code Online (Sandbox Code Playgroud)
我现在意识到它将光标返回到集合列表.
但我不知道如何循环它们并获得每个集合.
我想尝试这样的事情:
advertisers.each(function(err, advertiser) {
console.log(advertiser);
});
Run Code Online (Sandbox Code Playgroud)
但这不起作用.但我没有从网上搜索看到如何让它实际上使用简单的JavaScript.
然后我有这个代码:
var item;
if ( advertisers != null )
{
while(advertisers.hasNext())
{
item = advertisers.next();
}
}
Run Code Online (Sandbox Code Playgroud)
它给出了这个错误: SyntaxError: syntax error (shell):1
非常感谢!
谢谢!
在这个名为my_backupI的文件夹中,我有一个包含所有模型/集合的mongodb数据库转储,例如:
admins.bson
admins.metadata.json
categories.bson
categories.metadata.json
pages.bson
pages.metadata.json
.
.
.
Run Code Online (Sandbox Code Playgroud)
我有一个名为ubuntu_developmentmongodb 的数据库.我正在努力rails 3 + mongoid
如何将文件夹中的所有模型/集合导入/恢复my_backup到我的数据库ubuntu_development
非常感谢你!
在下面的Mongoid模型中,我如何为belongs_to关系字段添加别名?
class Contact
field :nm, :as => :name, :type => String # field aliasing
embeds_one :address, :store_as => :ad # embedded document aliasing
belongs_to :account # referenced relation doesn't support store_as
end
Run Code Online (Sandbox Code Playgroud)
我想将帐户ID存储在一个名为ac而不是的字段中account_id.
mongoid ×10
mongodb ×7
activemodel ×1
aggregation ×1
database ×1
heroku ×1
javascript ×1
moped ×1
nosql ×1
validation ×1