如何在Id中找到MongoDB中的元素? (scala / lift)

时间:2012-09-24 07:15:34

标签: mongodb lift

我正试图通过id使用:

从MongoDB中找到一个值
var id = S.param("id") openOr ""
val qry = QueryBuilder.start("id").is(id).get
def render = {
    val items = Delegacja.findAll(qry)   

    ".my_list *" #> items.map(e => 
      ".my_list_item" #> <li>{e.gdzie_od1}</li> &
      ".my_list_item_id" #> <li>{e.id}</li>
    )
}

型号:

package code.model
import _root_.net.liftweb.record.field._
import net.liftweb.mongodb.record._
import net.liftweb.mongodb.record.field.ObjectIdPk

class Delegacja private() extends MongoRecord[Delegacja] with ObjectIdPk[Delegacja]{
  def meta = Delegacja

  object gdzie_od1 extends StringField(this, 30)
  object gdzie_do1 extends StringField(this, 30)
  object data_od1 extends StringField(this, 500)
  object data_do1 extends StringField(this, 500)
}

object Delegacja extends Delegacja with MongoMetaRecord[Delegacja]

或只是val items = Delegacja.find("Id" -> id)val items = Delegacja.find("Id" -> id.toString)val items = Delegacja.find("id", id)并且没有找到任何内容,ID很好,当我通过某个名称查看它的确定但是没有结果时... 有人能告诉我我做错了吗?


嗯,我觉得有一些线索。 (并且真的在findid更改为_id;))

当我在做的时候:

val md1 = Delegacja.createRecord.gdzie_od1(gdzie_od1).gdzie_do1(gdzie_do1).save
S.notice(md1.id.is.toString)
val md = Delegacja.find("_id", md1.id.is.toString)
S.notice(md.is.toString)

我从Empty获得了S.notice(md.is.toString),但是当我将val md = Delegacja.find("_id", md1.id.is.toString)更改为val md = Delegacja.find("_id", md1.id.is)时就可以了viewitem.scala我需要以某种方式转换string ( id )我从链接到oibjectid得到的param,如何处理它?

class ViewItem {

  var id = S.param("id") openOr ""
          val qry = QueryBuilder.start("_id").is(id).get
  def render = {

    val items = Delegacja.find("_id", id) // THIS id.ToObjectIdPK some how ..
     S.notice(items.toString)

    ".my_list *" #> items.map(e => 
      ".my_list_item" #> <li>{e.gdzie_od1}</li> &
      ".my_list_item_id" #> <li>{e.id}</li>
    )
  }
...
}

1 个答案:

答案 0 :(得分:1)

当我得到答案时,我的意思是:

需要新的导入:

import org.bson.types.ObjectId

并且:

 val items = Delegacja.find("_id", new ObjectId(id))

这是必要的条款;]