MongoDb | find by id

18 views
Skip to first unread message

Maciej Bąk

unread,
Sep 24, 2012, 2:42:53 AM9/24/12
to lif...@googlegroups.com
Hello,

im trying to find value from mongodb by id using:

 var id = S.param("id") openOr ""
 val qry = QueryBuilder.start("id").is(id).get
  def render = {
    val items = Delegacja.findAll(qry)   
    //val items = Delegacja.find("Id" -> id)
    ".my_list *" #> items.map(e => 
      ".my_list_item" #> <li>{e.gdzie_od1}</li> &
      ".my_list_item_id" #> <li>{e.id}</li>
    )
  }

or just val items = Delegacja.find("Id" -> id) or val items = Delegacja.find("Id" -> id.toString) or val items = Delegacja.find("id", id) and nothing found, ID is good, when Im looking by some name its ok but by id no results..
Can some one tell me what im doing wrong ?
Thanks

Chas. Munat

unread,
Sep 24, 2012, 2:46:20 AM9/24/12
to lif...@googlegroups.com
Isn't it "_id" instead of "id"?

Chas.
--
--
Lift, the simply functional web framework: http://liftweb.net
Code: http://github.com/lift
Discussion: http://groups.google.com/group/liftweb
Stuck? Help us help you: https://www.assembla.com/wiki/show/liftweb/Posting_example_code
 
 
 

Maciej Bąk

unread,
Sep 24, 2012, 2:56:51 AM9/24/12
to lif...@googlegroups.com

W dniu poniedziałek, 24 września 2012 08:46:57 UTC+2 użytkownik chasm napisał:
Isn't it "_id" instead of "id"?

Chas.


im using ObjectIdPk:

 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]

so its id..

When im listing values from database, i list id too :

 def showAll(xhtml:NodeSeq):NodeSeq={
    page.flatMap(del => {
      ("gdzie_od1" #> del.gdzie_od1 &
      "gdzie_do1" #> del.gdzie_do1 &
      "id" #> del.id &
      "a [href]" #> "/item/view/%s".format(
        del.id.toString)
      ).apply(xhtml)
      })}  

and id works fine.

Chas. Munat

unread,
Sep 24, 2012, 3:06:27 AM9/24/12
to lif...@googlegroups.com
Ah. Sorry, you got me, then. Good luck.

Chas.

On 9/24/12 3:56 AM, Maciej B�k wrote:

W dniu poniedzia�ek, 24 wrze�nia 2012 08:46:57 UTC+2 u�ytkownik chasm napisa�:
Isn't it "_id" instead of "id"?

Chas.


im using ObjectIdPk:

�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]

so its id..

When im listing values from database, i list id too :

�def showAll(xhtml:NodeSeq):NodeSeq={
ďż˝ ďż˝ page.flatMap(del => {
ďż˝ ďż˝ ďż˝ ("gdzie_od1" #> del.gdzie_od1 &
ďż˝ ďż˝ ďż˝ "gdzie_do1" #> del.gdzie_do1 &
ďż˝ ďż˝ ďż˝ "id" #> del.id &
ďż˝ ďż˝ ďż˝ "a [href]" #> "/item/view/%s".format(
ďż˝ ďż˝ ďż˝ ďż˝ del.id.toString)
ďż˝ ďż˝ ďż˝ ).apply(xhtml)
ďż˝ ďż˝ ďż˝ })} ďż˝

and id works fine.
--
--
Lift, the simply functional web framework: http://liftweb.net
Code: http://github.com/lift
Discussion: http://groups.google.com/group/liftweb
Stuck? Help us help you: https://www.assembla.com/wiki/show/liftweb/Posting_example_code
ďż˝
ďż˝
ďż˝

Maciej Bąk

unread,
Sep 24, 2012, 3:53:09 AM9/24/12
to lif...@googlegroups.com
Hmm i think have some clue. ( And really in find change id to _id ;) )

when im doing :

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)

i get from S.notice(md.is.toString) Empty but when i change val md = Delegacja.find("_id", md1.id.is.toString) to val md = Delegacja.find("_id", md1.id.is) is ok so in viewitem.scala i need to some how convert string ( id ) which i get as param from link to oibjectid, Any 1 know how to deal with it ? 

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)

Maciej Bąk

unread,
Sep 24, 2012, 4:39:05 AM9/24/12
to lif...@googlegroups.com

Ah mean while I get answer:

need new import:

import org.bson.types.ObjectId

And :

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

This is the needed conersion ;]

Chas. Munat

unread,
Sep 24, 2012, 4:44:32 AM9/24/12
to lif...@googlegroups.com
Good to know!

Chas.
--

Ben Phelan

unread,
Sep 24, 2012, 6:10:24 AM9/24/12
to lif...@googlegroups.com
You may find these kinds of problems much easier to debug if you use Rogue for querying.
Reply all
Reply to author
Forward
0 new messages