2
を存在しない。これは、文書構造が私の場合には可能性がどのようであれば、それを挿入します。のMongoDB:更新ネストされた配列要素または
{
"_id" : "P9H59RuSbnm45erj7",
"description" : [
{
"content" : "Something",
"language" : "en",
"timestamp" : 1476958705
},
{
"content" : "Irgendetwas",
"language" : "de",
"timestamp" : 1476958705
}
]
}
今私は、特定の言語の内容を更新します。 説明配列には言語が不足している可能性があります。そうでない場合は
{
"_id" : "P9H59RuSbnm45erj7",
"description" : [
{
"content" : "Something",
"language" : "en",
"timestamp" : 1476958705
}
]
}
それでは、私がやっていることは、言語が存在した場合最初にチェックすることです、それは既存のされている場合は、
- 、私は簡単な更新/ $を行いますが
- を設定しました既存、私は更新を行います/ $ addToSet
これは簡単にすることができます私の質問です。既存の言語をチェックしてから、2つの異なる更新クエリを使用する必要がありますか?これでコードがポップアップします...
私は流星のアプリでこのコードを使用していますので、私はminimongoを使用しています。
if (Collection.find({ _id: 'P9H59RuSbnm45erj7', 'description.language': 'en' }).count() > 0) {
Collection.update(
{
_id : 'P9H59RuSbnm45erj7',
'description.language': 'en'
},
{
$set: {
'description.$.content' : value,
'description.$.timestamp': Math.floor(Date.now()/1000)
}
}
);
}
else {
Collection.update(
{ _id: 'P9H59RuSbnm45erj7' },
{
$addToSet: {
description: {
content : value,
language : 'en',
timestamp: Math.floor(Date.now()/1000)
}
}
}
);
}
私のケースではほとんどの場合、それは更新であり、めったにプッシュではないと思います。 – user3142695
@ user3142695私はquery1を使ってquery2を反転させます。 –