在我的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)
感谢
答案 0 :(得分:0)
我猜这是第一个$而且不在引号中。但由于我无法看到你的实际java代码,我只能在这一点上猜测。