小编Won*_*nko的帖子

LokiJS:简单查找查询返回错误的结果

在LokiJS中,我尝试了一个非常简单的查询(我假设是AND):

var dbRes = recsCol.find({'format':format, 'cardId':-1});
Run Code Online (Sandbox Code Playgroud)

插入一些数据后

recsCol.insert({format:format, cardId:id, recCardId:key, amount:item[key]});
Run Code Online (Sandbox Code Playgroud)

不包含-1的cardId.

查询仍会产生结果.这是预期的行为吗?如果是这样,我怎样才能使字段完全匹配,以便在这种情况下我不会得到结果?

javascript nosql in-memory-database lokijs

4
推荐指数
1
解决办法
1036
查看次数

Scala Slick 3.0 中的随机行

如何有效地从表中随机取出一行?

到目前为止我所拥有的(无法编译并且可能完全被误导):

val query = for {
  m <- tableQuery
  maxId <- tableQuery.groupBy(_.id).map { case (tId, t) => t.map(_.id).max}//m.map(_.id).max
  if (m.id >= maxId * Random.nextFloat())
} yield m
Run Code Online (Sandbox Code Playgroud)

编辑:经过一些修补并在 bhavya 的帮助下,我想出了以下代码,该代码可以完成这项工作,但会进行两次数据库往返:

val maxIdQuery: Rep[Option[Int]] = magicCardDumps.map(_.id).max
val maxIdFuture: Future[Option[Int]] = db.run(maxIdQuery.result)
val maxId = Await.result(maxIdFuture, 10 seconds).get
val randCardQuery: Query[MagicCardDumps, MagicCardDump, Seq] = magicCardDumps.filter(_.id >= (maxId * Random.nextFloat()).toInt).sortBy(_.id).take(1)
val resultFuture: Future[Seq[MagicCardDump]] = db.run(randCardQuery.result)
val resultSeq: Seq[MagicCardDump]= Await.result(resultFuture, Duration(10, "seconds"))
val card = resultSeq.head
println(card)
Run Code Online (Sandbox Code Playgroud)

如何将这些查询合并为一个并提高效率?

scala slick

2
推荐指数
1
解决办法
578
查看次数

标签 统计

in-memory-database ×1

javascript ×1

lokijs ×1

nosql ×1

scala ×1

slick ×1