Java 在字段中/从字段中插入/检索对

Java 在字段中/从字段中插入/检索对,java,json,mongodb,arraylist,hashmap,Java,Json,Mongodb,Arraylist,Hashmap,我正在尝试在mongoDB文档中插入对。到目前为止,我是这样做的: private static MongoCollection<Document> getCollectionn(String link, String coll){ ... } public static void main(String[] args) { MongoCollection<Document> fb_users; fb_users = getCo

我正在尝试在mongoDB文档中插入对。到目前为止,我是这样做的:

private static MongoCollection<Document> getCollectionn(String link, String coll){
     ...
}

public static void main(String[] args) {
        MongoCollection<Document> fb_users;
        fb_users = getCollectionn("mongodb://...", "fb_users2");
        Document myDoc;
        BasicDBObject query = new BasicDBObject();
        query.put("fbid", "1");
        myDoc = fb_users.find(query).first();
        int postId=5;
        int rating=3;                  
        fb_users.updateOne(myDoc,
           new Document("$push", new Document("ratings",  java.util.Arrays.asList(rating, postId))));

        Object a = myDoc.get("ratings");
        ArrayList<Document> b = (ArrayList<Document>) a;
        System.out.println(b.get(0);//prints [3, 5]
}
在println中,我得到结果[3,5]

我的问题是:


如何分别接收数字3和数字5?我应该用另一种方式插入文档吗?Iam使用mongo java驱动程序3.2.0。

好的,我找到了解决方案。这是:

    Document myDoc;   
    BasicDBObject query = new BasicDBObject();
    query.put("fbid", "1");
    myDoc = fb_users.find(query).first();
    int postId=5;
    int rating=3;
    Document listItem = new Document("ratings", new   Document(String.valueOf(rating), String.valueOf(postId)));
    Document updateQuery = new Document("$push", listItem);
    fb_users.updateOne(myDoc, updateQuery);
    MongoCursor<Document> curs = fb_users.find(query).iterator();
    ArrayList<Document> list  = (ArrayList<Document>) myDoc.get("ratings");
    Iterator<Document> iterateList = list  .iterator();
    while(iterateList .hasNext()){
        Document pair = iterateList .next();
        for(String element : pair.keySet()){
            System.out.println(element + " " + pair.get(element));
        }
    }
    Document myDoc;   
    BasicDBObject query = new BasicDBObject();
    query.put("fbid", "1");
    myDoc = fb_users.find(query).first();
    int postId=5;
    int rating=3;
    Document listItem = new Document("ratings", new   Document(String.valueOf(rating), String.valueOf(postId)));
    Document updateQuery = new Document("$push", listItem);
    fb_users.updateOne(myDoc, updateQuery);
    MongoCursor<Document> curs = fb_users.find(query).iterator();
    ArrayList<Document> list  = (ArrayList<Document>) myDoc.get("ratings");
    Iterator<Document> iterateList = list  .iterator();
    while(iterateList .hasNext()){
        Document pair = iterateList .next();
        for(String element : pair.keySet()){
            System.out.println(element + " " + pair.get(element));
        }
    }
{
    "_id": {
        "$oid": "56f173b5e4b04eaac6531030"
    },
    "fbid": "1",
    "ratings": [
        {
            "3": "5"
        },
        {
            "3": "5"
        }
    ]
}