2

JAVA を使用して mongoDB を学習し始めたばかりです。私はmongoに次のドキュメントを持っています

{
"_id": {
    "$oid": "513fa587c5d0cf174eb9b1f8"
},
"suitename": "test_suite_name",
"testname": "test_name]",
"milestones": [
    {
        "milestone_id": 45
    }
]
}

suitename、testname、milestone_id に複合キーがあります。これら 3 つのフィールドを持つファイルを処理する必要があります。簡単な DBObject クエリを作成し、count != 0 かどうかを確認します

BasicDBObject query = new BasicDBObject();
query.put("suitename", testsuite);
query.put("testname", testcase);
query.put("milestones.milestone_id", SampleProgram.milestone_id);

カウント == 0 の場合 --> mongo にドキュメントを追加 -> これは正常に動作するようです

私が理解しようとしているのは、ファイルにmilestone_idの新しい値がある場合、既存のドキュメントのマイルストーン配列にマイルストーンを追加するだけです。既存のドキュメントは、スイート名とテスト名に基づいて決定されます。

したがって、milestone_id = 10 の場合、ドキュメントは次のようになります。

{
"_id": {
    "$oid": "513fa587c5d0cf174eb9b1f8"
},
"suitename": "test_suite_name",
"testname": "test_name]",
"milestones": [
    {
        "milestone_id": 45
    },
    {
        "milestone_id": 10
    }

]
}

どうすればこれを達成できますか?

ありがとう

4

2 に答える 2

4

これは、配列に値を追加する$push演算子とupdate(…)メソッドで実現できます。

BasicDBObject query = new BasicDBObject();
query.put("suitename", testsuite);
query.put("testname", testcase);

BasicDBObject push = new BasicDBObject();
push.put("$push",
  new BasicDBObject("milestones",
    new BasicDBObject("milestone_id", SampleProgram.milestone_id)));

yourCollection.update(query, push);
于 2013-03-12T22:47:27.230 に答える
1
BasicDBObject newDocument = new BasicDBObject();
newDocument.append("$set", new BasicDBObject().append("clients", 110));

BasicDBObject searchQuery = new BasicDBObject().append("hosting", "hostB");

collection.update(searchQuery, newDocument);
于 2016-09-13T04:14:29.830 に答える