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

时间:2013-12-19 11:54:59

标签: java mongodb mongodb-query 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 )

现在我正在尝试的是,当用户输入匹配List键值的“0”和“1”`位置时,我想检索ObjectId列表。如果我使用`$ in`它看起来list的所有值。所以我正在尝试使用`$ 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)
感谢

1 个答案:

答案 0 :(得分:0)

我猜这是第一个$而且不在引号中。但由于我无法看到你的实际java代码,我只能在这一点上猜测。