2012-09-24 3 views
1

내가 사용 ID로 MongoDB를의 값을 찾기 위해 노력하고있어 :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가 좋아, 내가 어떤 이름으로 그 ok를보고있다. 그러나 id에 의해 어떤 결과가 아니라도. 누군가 내가 나에게하고있는 것을 나에게 이야기 할 수 있냐?


흠 나는 몇 가지 단서가 있다고 생각합니다. (정말 변화 id_idfind과)

) 내가 뭘 할 때 :

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) 

내가 S.notice(md.is.toString)에서 Empty을 얻을하지만 val md = Delegacja.find("_id", md1.id.is)val md = Delegacja.find("_id", md1.id.is.toString)을 변경할 때 괜찮 viewitem.scala에, 그래서 어떻게 든이 필요 내가 oibjectid에 대한 링크에서 param으로 얻는 string (id)을 어떻게 처리할까요?

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

내가 대답다면 아의 의미 :

import org.bson.types.ObjectId 

그리고 :

새로운 수입이 필요

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

이것은 필요한 conersion을]

관련 문제