Suppose I have a MongoDB collection like this:
{
"_id": "id_1", // this is an objectId
"field_1" : 4,
"field_2" : "objectId_1" // this is an objectId
},
{
"_id": "id_2",
"field_1" : 3,
"field_2" : "objectId_2" // this is an objectId
},
{
"_id": "id_3",
"field_1" : 2,
"field_2" : "objectId_3" // this is an objectId
},...
and now everytime I update a document, I want to update the second field "field_2" a new ObjectId (auto generated or whatever). But the value must be unique (like an id)
For an example, suppose when I run this query
db.collection.updateMany(
{ "field_1" : { $lt : 4} },
{ $set: { "field_2": "new_ObjectId"} }// an objectId should be generated for every matched document
)
The result should update 2 document
{
"_id": "id_2",
"field_1" : 3,
"field_2" : "objectId_4" // a new objectId should be generate for this
},
{
"_id": "id_3",
"field_1" : 2,
"field_2" : "objectId_5" // and another objectId for this
}
Is it possible to archive that in one query? I am using .net mongo driver and it would be great if you could show me how to do this by C# code. Otherwise, it is fine with a raw query.