私はrethinkdbで新しく、存在しないか、値が新しい値よりも小さい場合、いくつかのフィールドに値を設定する、設定する。以下は、私はこのコードは、彼らがnullの場合にのみtenantIdとtimeLayerを設定し、他のフィールドのために、彼らがnullであるか、値Iがに設定された値未満である場合にのみ、MongoDBのいくつかのフィールドの条件付き更新
collection.updateOne(new BasicDBObject(BookKeeperEvent.tenantPropertyName, bookKeeper.getTenantId()).append(BookKeeperEvent.timeLayerPropertyName, bookKeeper.getTimeLayer()),
new BasicDBObject("$max", new BasicDBObject(BookKeeperEvent.latestFullDataPropertyName, bookKeeper.getLatestFullData())
.append(BookKeeperEvent.latestRawDataPropertyName, bookKeeper.getLatestRawData())
.append(BookKeeperEvent.latestHealthPropertyName, bookKeeper.getLatestHealth())
.append(BookKeeperEvent.lastUpdatePropertyName, bookKeeper.getLastUpdate())
.append(BookKeeperEvent.firstFullDataPropertyName, bookKeeper.getFirstFullData()))
.append("$setOnInsert", new BasicDBObject(BookKeeperEvent.tenantPropertyName, bookKeeper.getTenantId()).append(BookKeeperEvent.timeLayerPropertyName, bookKeeper.getTimeLayer())),
new UpdateOptions().upsert(true))
でそれをやった方法ですクエリ。 rethinkdbで同じことをする方法はありますか?そしてどうやって?
おかげで、 ダニエラ
は、私は次のクエリは、私はMongoの中でやったことと等価であると思いますが、それは失敗します。 – Daniela