mongodb Mongomapper查询收集问题

nnsrf1az  于 2023-10-16  发布在  Go
关注(0)|答案(3)|浏览(92)

当我定义User has_many meetings时,它会自动创建一个“user_id”键/值对来关联User集合。除了我不能运行任何mongo_mapper发现使用这个值,没有它返回nil或[]。
Meeting.first(:user_id =>“1234”)
Meeting.all(:user_id =>“1234”)
Meeting.find(:user_id =>“1234”)
全部返回nil。还有别的语法吗基本上我不能在自动生成的关联ObjectId上运行查询。

# Methods

class User
  include MongoMapper::Document

  key :user_name, String, :required => true
  key :password, String

  many :meetings
end

class Meeting
  include MongoMapper::Document

  key :name, String, :required => true
  key :count, Integer, :default => 1
end

# Sinatra

get '/add' do
  user = User.new
  user.meetings  "foobar") #should read: Meeting.new(:name => "foobar")
  user.save
end

get '/find' do
  test = Meeting.first(:user_id => "4b4f9d6d348f82370b000001") #this is the _id of the newly create user
  p test # WTF! returns []
end
lh80um4z

lh80um4z1#

正如Jimmy提到的检查会议。所有,我不认为你会有任何东西。
根据上面的例子,我看到了一些潜在的问题。

  • 您的用户需要一个:user_name,所以它不会被保存
  • 将永远不会被保存,因为您没有设置所需的名称
  • 您的会议也未保存
  • 还有一件事,你需要把你的会议联系到用户。
    这适用于mongo_mapper 0.6.10
require 'rubygems'
require 'mongo_mapper'
MongoMapper.database = "meetings"

class User
  include MongoMapper::Document

  key :user_name, String, :required => true
  key :password, String

  many :meetings
end

class Meeting
  include MongoMapper::Document

  key :name, String, :required => true
  key :count, Integer, :default => 1
end

user = User.create(:user_name => "Rubyist")
user.meetings  << Meeting.create(:name => "foobar")
user.save

Meeting.first(:user_id => user.id)
User.find(user.id).meetings

你可能已经知道了,但我希望这对你有帮助。

q35jwt9p

q35jwt9p2#

您可以尝试使用

Meeting.find_by_user_id "1234"

此外,如果您运行script/console,那么Meeting.all是否会显示每个记录都分配了user_id?

hvvq6cgz

hvvq6cgz3#

如何使用User.find(“1234”).meetings?

相关问题