$slice后$in应用于Mongodb Java中的特定字段以搜索数据



在我的 mongodb 数据库中,我有如下格式的数据

"_id": ObjectId("52b2802cd29e32f494463847"),
"Name": "Hai2",
"List": {
"0": "72",
"1": "46",
"2": "94",
"3": "13",
"4": {
"0": ObjectId("52b2801fd29e32f49446383c"),
"1": ObjectId("52b28020d29e32f49446383f"),
"2": ObjectId("52b28021d29e32f494463842")
}
etc ..(Like this many data is there in db save arrangement )

现在我正在尝试的是,当用户输入与列表键值的"0"和"1"位置匹配时,我想检索 ObjectId 列表。如果我使用"$in",它会查看列表的所有值。所以我正在尝试使用"$slice"来切片列表并搜索到特定位置。

我正在尝试的查询是,$slice -> { "$slice" : [ 0 , 2]}
$in -> { "$in" : [ "72" , "46"]}

如果我尝试这两件事,
$and -> { "List" : { "$and" : [ { "$slice" : [ 0 , 2]} , { "$in" : [ "72" , "46"]}]}}

我得到了例外,

com.mongodb.MongoException: invalid operator: $and
at com.mongodb.MongoException.parse(MongoException.java:82)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:314)

在我尝试之后,

searchQuery -> { "List" : { "$in" : [ "72" , "46"]}},
sliceQuery -> { "List" : { "$slice" : [ 0 , 2]}}

DBCursor dbCursor = collection.find(searchQuery, sliceQuery)

为此,我得到了结果,例如在所有字段中搜索并切片列表结果字段

任何人都可以建议我如何先$slice,然后再为切片结果申请$in?(我正在使用 mongo-java-driver2.10.1)
谢谢

我猜是第一个$and没有用引号引起来。 但是由于我看不到您的实际 java 代码,因此我只能在这一点上猜测。

最新更新