我在mongodb集合中有一个名为“usercollection”的数据,如下所示:
ID: "123"
name: "Tom"
age: 19
favprogram: (This is an Array)
{
0: (This is an Object)
{
name: "Program"
genre: "Thriller"
programID: "001"
}
1:
{
name: "Program"
genre: "Thriller"
programID: "002"
}
}
有些程序具有相同的名称,但它们的程序ID是唯一的。
在favprogram数组中创建对象的代码(它可以工作):
DBObject userQuery = new BasicDBObject("ID", 123);
DBObject favprogram = new BasicDBObject("favprogram", new BasicDBObject("name", "Program")
.append("genre", "Thriller")
.append("programID", "001"));
userCollection.update(userQuery, new BasicDBObject("$push", favprogram));
但是,以下代码无法从id为“123”的用户处获取programid。
DBObject query = new BasicDBObject("ID", "123");
DBCursor cursor = userCollection.find(query);
String programID = (String) cursor.next().get("favprogram.programID");
我的问题是,我想搜索一个特定的用户id(例如,“123”)并获取他的所有程序id。但似乎我永远也做不好(每次都是空的)。提前谢谢!
2条答案
按热度按时间q3aa05251#
我终于从id为“123”的用户那里获得了所有的程序id。
现在,该用户的所有programid都被放入programidarray。
uujelgoq2#
首先,你应该试着把你的json构造成有效的json——它可以帮助任何参与的人来帮助你。我假设你是从json开始的,类似于。。。
假设这个json是正确的,我还假设您正在尝试构造以下聚合查询,但是使用java。。。
可能有很多方法可以满足你的要求,这只是一种方法。如果您觉得这个查询结构合适,那么这个java代码将执行这样一个聚合。。。
下面是用于此程序的pom.xml。这个程序在提交前已经过测试。。。
祝你好运!
顺便说一句,继续使用basicdbobject是进行此操作的旧方法。与bson助手相比,例如。。。