2016-04-21 18 views
5

Trình điều khiển MongoDB 2.5 có phương pháp DBCollection.findAndModify() cho việc này, nhưng MongoCollection bỏ qua phương pháp này. Sau một số tìm kiếm, tôi thấy rằng findOneAndUpdate() hiện có cùng vai trò. Nhưng phương pháp này có chữ ký khác nhau, không hiểu cách sử dụng nó. Đây là lệnh tôi muốn thực hiệnLàm thế nào để thực thi MongoDB findAndModify truy vấn trong trình điều khiển Java MongoCollection 3?

db.COL1.findAndModify({ 
    query: { id: 2 }, 
    update: { 
    $setOnInsert: { date: new Date(), reptype: 'EOD' } 
    }, 
    new: true, // return new doc if one is upserted 
    upsert: true // insert the document if it does not exist 
}) 

Tài liệu cho findOneAndUpdate method khẳng định rằng

Returns: các tài liệu đã được cập nhật. Tùy thuộc vào giá trị của thuộc tính returnOriginal, tài liệu này sẽ là tài liệu như trước khi cập nhật hoặc vì nó là sau khi cập nhật.

nhưng không thể tìm thấy bất kỳ nội dung nào về thuộc tính returnOriginal này. Bất cứ ai cũng biết làm thế nào để thiết lập nó một cách chính xác?

Trả lời

3

Một Java tương đương với truy vấn của bạn nên đi gần như thế này:

Về returnOriginal tài sản - bạn nói đúng - không có những điều như vậy. Javadoc không liên quan ở nơi này. Tuy nhiên, có một tài sản returnDocument trong số FindOneAndUpdateOptions. Bạn có thể đặt thành ReturnDocument.AFTER hoặc ReturnDocument.BEFORE tương đương với new: true/false.

+0

'returnOriginal' cờ ​​phải là' mới FindOneAndUpdateOptions(). ReturnDocument (ReturnDocument.BEFORE)) ' – chridam

+0

@chridam không phải là' ReturnDocument.AFTER' tương đương với 'new: true'? –

+0

Trong khi đó là đúng trong bối cảnh đó, tôi đề cập đến những gì OP hỏi trong câu hỏi của họ _ nhưng không thể tìm thấy bất cứ điều gì về tài sản 'returnOriginal' này. Bất cứ ai cũng biết làm thế nào để thiết lập nó một cách chính xác? _ – chridam

Các vấn đề liên quan