1

pymongo を使用した Python の for-in ループの一部として、フィールド内にネストされたドキュメント/オブジェクトをlinktypeフィールド内に追加したいと考えています。最初のそのようなエントリが追加される前に、フィールドもlinksフィールドも存在しません。linkslinktype

これを行うコマンドは何ですか?

リンクを追加する前の項目は次のとおりです。

item = {
    "_id" : ObjectId("5067c26b9d595266e25e825a"),
    "name": "a Name"
}

そして、 type のリンクを 1 つ追加した後typeA:

toType = "typeA"
to_link = {"_id" : ObjectId("5067c26b9d595266e25e825b"), "property":"value"}

{
    "_id" : ObjectId("5067c26b9d595266e25e825a"),
    "name": "a Name",
    "links" : {
        "typeA":{
            {"_id" : ObjectId("5067c26b9d595266e25e825b"), "property":"value"}       
        }
    }
}

私が試してみました:

db.collection.update({"name":"a Name"},{{"links":{"$addToSet":{toType:to_link}}})

これは機能しません。私がちょうど使用する場合:

db.collection.update({"name":"a Name"},{ {"$addToSet":{toType:to_link}} )

それは機能しますが、それは私が望むものではありません。

4

1 に答える 1

1

$addToSet配列に追加するためのものです。既存の埋め込みオブジェクトに新しいプロパティを追加するには、$set演算子とドット表記を次のように使用する必要があります。

db.collection.update({name: 'a name'}, {$set: {'links.' + toType: to_link}})
于 2012-09-30T13:35:14.287 に答える