programing

동일한 MongoDB 업데이트에서 $push 및 $set

css3 2023. 6. 29. 20:18

동일한 MongoDB 업데이트에서 $push 및 $set

MongoDB의 Java 드라이버를 사용하여 동일한 작업에서 레코드를 두 번($set 및 $push) 업데이트하려고 합니다.다음과 유사한 코드를 사용하고 있습니다.

    BasicDBObject pushUpdate = new BasicDBObject().append("$push", new BasicDBObject().append("values", dboVital));
    BasicDBObject setUpdate = new BasicDBObject().append("$set", new BasicDBObject().append("endTime", time));
    BasicDBList combinedUpdate = new BasicDBList();
    combinedUpdate.add( pushUpdate);        
    combinedUpdate.add( setUpdate);


    collection.update( new BasicDBObject().append("_id", pageId), combinedUpdate, true, false);

$set과 $push를 BasicDBList를 통해 동일한 업데이트에 결합하면 IgalledArgument가 표시됩니다.예외: "db에 저장된 필드는 '$'(잘못된 키: '$push')로 시작할 수 없습니다."

두 번의 개별 업데이트를 수행하면 업데이트 및 setUpdate를 모두 누르면 유효한 결과가 생성됩니다.

감사합니다!

저는 자바 드라이버를 모르는데, 거기서 목록을 만들어야 하나요?이 코드를 사용하면 어떻게 됩니까?

BasicDBObject update = new BasicDBObject().append("$push", new BasicDBObject().append("values", dboVital));
update = update.append("$set", new BasicDBObject().append("endTime", time));

collection.update( new BasicDBObject().append("_id", pageId), update, true, false);

이것은 다음과 같은 것을 생성해야 합니다.

db.collection.update({_id: pageId}, {$push: {values: dboVital}, $set: {endTime: time}});

코드는 다음과 같이 생성됩니다.

db.collection.update({_id: pageId}, [{$push: {values: dboVital}}, {$set: {endTime: time}}]);

BasicDBObject update = newBasicDBObject().append("$push"), newBasicDBObject().append("vals", dboVital); update = update.basic$set", newBasicDBObject("endTime", 시간);

collection.update(새 BasicDBobject().append("_id", pageId), update, true, false);

내 mongodb 버전은 3.4.20이고 사용 중입니다.

db.collection.update({_id: pageId}, [{$push: {values: dboVital}}, {$set: {endTime: time}}]);

오류가 발생했습니다.

[thread1] Error: field names cannot start with $ [$push] :

이 오류를 해결하기 위해 다음을 사용할 수 있습니다.

db.collection.update({_id: pageId}, {$push: {values: dboVital}, $set: {endTime: time}});

언급URL : https://stackoverflow.com/questions/9071192/push-and-set-in-same-mongodb-update