我一直在使用Scala mongo驅動程序中的MongoDB過濾器。我試圖獲取集合中文檔中的特定字符串位於字符串列表中的所有文檔。我創建斯卡拉字符串列表,然後我建立與IN操作符的查詢:scala mongodb IN過濾器使用
val find3 = in(EventItem, ListDelayedItems.toList)
根據該文件,中有兩個重載方法:
public static <TItem> Bson in(String fieldName,
TItem... values)
public static <TItem> Bson in(String fieldName,
Iterable<TItem> values)
的問題是,我不知道如何構造Iterable值。如果我將值作爲值列表傳遞(請參閱第一種重載方法),
in(EventItem, "ABCDE", "DEF", "ESO4SAP")
它有效。這是我所看到的,當我打印在運營商過濾
Operator Filter{fieldName='billing_event.action.resources.item', operator='$in', value=[ABCDE, DEF, ESO4SAP]}
但只要我嘗試通過在使用第二個重載方法的第二個參數的清單,這是行不通的。我試圖用來過濾的列表是動態的。我曾嘗試scala列表,ListBuffers,java.util.Lists,但每次我使用像這樣的變量:
in(EventItem, ListValidItems)
它停止工作。我定義了ListValidItems因爲每個我認識的收集,但是當我看到日誌我看到這一點:
Operator Filter{fieldName='billing_event.action.resources.item', operator='$in', value=[List(ABCDE, EFGH, ESO4SAP)]}
所以從 值=改變[ABCDE,DEF,ESO4SAP]價值= [列表(ABCDE,EFGH ,ESO4SAP)]並且過濾器不起作用。
正如我所說,我嘗試了很多不同的名單,試圖list.toIterator但似乎沒有任何的列表數據結構轉換爲一個值的列表TItem ...或可迭代
這是列表工作進口爲mongoDB驅動程序
import org.mongodb.scala.connection.ClusterSettings
import com.mongodb.BasicDBObject
import com.mongodb.client.model.{FindOneAndReplaceOptions, FindOneAndUpdateOptions}
import org.mongodb.scala.ServerAddress
import org.mongodb.scala._
import org.mongodb.scala.bson.{BsonDocument, conversions}
import org.mongodb.scala.model.Filters._
import org.mongodb.scala.model.Updates._
任何想法?
謝謝!
我剛試過。我現在得到的是一個元素的列表,元素是列表 運算符篩選{fieldName ='billing_event.action.resources.item',operator ='$ in',value = [[ABCDE,EFGH, ESO4SAP]} 過濾器失敗,因爲它不是[ABCDE,EFGH,ESO4SAP],而[ABCDE,EFGH,ESO4SAP] – AndoverDev
你能請更新您的問題,列出了所有的'import'聲明對於'com.mongodb'下的任何東西? –
爲mongoDB驅動添加了所有進口 謝謝! – AndoverDev