2016-12-30 7 views
0

私たちは似たレコードを挿入しようとした場合、そのレコードは ここ同様のレコードを挿入しようとするとdbのレコードを更新する方法は?

を更新することの必要性の代わりに挿入すべきではありませんが、私のクエリは、これを実行した後

db.cos.insert({'subject':'A','batch': '2004','section':'A','cos':[{'code':1,'desc': '1 d','pos': {'po1': 3,'po2': 3.5,'po3': 0,'po4': 2,'po5': 3}}] }); 

です1つのデータをクエリすると、このクエリをもう一度実行すると、このクエリが再度実行されます。 更新

答えて

0

文書の一意のIDが必要です。db.cos.save(yourDocument)を使用して更新することができます。

https://docs.mongodb.com/manual/reference/method/db.collection.save/

あなたはユニークなIDを提供しない、またはそれが提供するキーを見つけることができなかった場合は、新しいドキュメントが作成されます。

db.cos.save({ 
    _id: 'hello', 
    data: 'world' 
}); 
// a new document will be created: 
// {_id: 'hello', data: 'world'} 

db.cos.save({ 
    _id: 'hello', 
    data: 'world 2' 
}); 
// the same document will be updated: 
// {_id: 'hello', data: 'world2'} 

db.cos.save({ 
    _id: 'hello2', 
    data: 'world' 
}); 
// another document will be created: 
// {_id: 'hello', data: 'world2'} 
// {_id: 'hello2', data: 'world'} 

db.cos.save({ 
    data: 'world3' 
}); 
// another document will be created: 
// {_id: 'hello', data: 'world2'} 
// {_id: 'hello2', data: 'world'} 
// {_id: ObjectID(1), data: 'world'} 
0

利用{アップサート:真}

db.cos.update({someQueryToFindDocument}, {'subject':'A','batch': '2004','section':'A','cos':[{'code':1,'desc': '1 d','pos': {'po1': 3,'po2': 3.5,'po3': 0,'po4': 2,'po5': 3}}] }, {upsert:true}); 

何の文書は、COSコレクション内のクエリに応じてマッチしていない場合、それはそれ以外の場合は、更新する、挿入します。

関連する問題