我试图使用游标迭代文档,我想将它们存储在列表中,然后返回类型DBOject的列表.
这是我正在尝试的:
public List<DBObject> getResultsInDescendingOrderByDate(int limit) {
List<DBObject> myList = null;
DBCursor myCursor=myCollection.find().sort(new BasicDBObject("date",-1)).limit(10);
try {
while(myCursor.hasNext()) {
System.out.print(myCursor.next());
myList.add(new BasicDBObject("_id",(String) myCursor.curr().get("_id"))
.append("title",(String) myCursor.curr().get("title"))
.append("author",(String) myCursor.curr().get("author"))
.append("permalink",(String) myCursor.curr().get("permalink"))
.append("body",(String) myCursor.curr().get("body"))
.append("comment",new BasicDBObject("comments",(String) myCursor.curr().get("comments")))
.append("tags",new BasicDBObject("tags",(String) myCursor.curr().get("tags"))
.append("date",(Date) myCursor.curr().get("date"))));
myCursor.next();
}
}
finally {
myCursor.close();
}
return myList;
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何将数据类型转换为光标中的原始数据类型.我试着搜索,但没有线索.
请帮忙.
谢谢
这就是我的收藏的样子:
db.students.find({_id:100}).pretty()
{
"_id" : 100,
"name" : "Demarcus Audette",
"scores" : [
{
"type" : "exam",
"score" : 30.61740640636871
},
{
"type" : "quiz",
"score" : 14.23233821353732
},
{
"type" : "homework",
"score" : 31.41421298576332
},
{
"type" : "homework",
"score" : 30.09304792394713
}
]
}
Run Code Online (Sandbox Code Playgroud)
我正在 Mongo shell 上执行以下 2 个查询:
x=db.students.aggregate( [{ "$unwind":"$scores" },{"$match":{"scores.type":"homework"}},{ "$group":{"_id":"$_id","minscore":{"$min":"$scores.score" }}} ] )
Run Code Online (Sandbox Code Playgroud)
下一个是:
for (var a in x["a"]) { db.students.update( { "_id":a["_id"] },{"$pull":{"scores":{"score":a["minscore"]}}} ) }
Run Code Online (Sandbox Code Playgroud)
我可以看到最低分数列表,但是当我执行第二个查询时,似乎没有任何内容被删除。我知道有逻辑错误。我试图阅读这里的帖子,但我无法通过它。我只是想知道我哪里出了问题。