将$in应用于mongodb java中的特定字段以搜索数据后的$slice

将$in应用于mongodb java中的特定字段以搜索数据后的$slice,java,mongodb,mongodb-query,mongodb-java,Java,Mongodb,Mongodb Query,Mongodb Java,在我的mongodb数据库中,我有如下格式的数据 “_id”:ObjectId(“52b2802cd29e32f494463847”), “名称”:“Hai2”, “列表”:{ “0”:“72”, “1”:“46”, “2”:“94”, “3”:“13”, “4”:{ “0”:对象ID(“52b2801fd29e32f49446383c”), “1”:ObjectId(“52b28020d29e32f49446383f”), “2”:ObjectId(“52b28021d29e32f494463

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

“_id”:ObjectId(“52b2802cd29e32f494463847”),
“名称”:“Hai2”,
“列表”:{
“0”:“72”,
“1”:“46”,
“2”:“94”,
“3”:“13”,
“4”:{
“0”:对象ID(“52b2801fd29e32f49446383c”),
“1”:ObjectId(“52b28020d29e32f49446383f”),
“2”:ObjectId(“52b28021d29e32f494463842”)
}
等..(像这样,在db保存安排中有许多数据)

现在我要尝试的是,当用户输入匹配列表键值的“0”和“1”位置时,检索ObjectId列表。如果我使用“$in”,它将查找列表的所有值。因此,我尝试使用“$slice”对列表进行切片并搜索到特定位置

我正在尝试的查询是,
$slice->{“$slice”:[0,2]}

$in->{“$in”:[“72”,“46”]}
如果我尝试为这两件事,
$和->{“List”:{“$和”:[{“$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->{“列表”:{“$slice”:[0,2]}}

DBCursor DBCursor=collection.find(搜索查询、切片查询)

为此,我得到的结果类似于在所有字段中搜索和切片列表结果字段

有谁能建议我如何先
$slice
,然后为切片结果应用
$in
(我使用的是mongo-java-driver2.10.1)

谢谢

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

我正在使用java迭代所有文档并检查检索结果。但是我觉得这比直接mongodb查询效率低。您能发布吗请问您正在使用的Java代码是什么?还是您正在使用像Jongo这样的库?