Frage

Sagen, dass ich eine Datenstruktur etwas wie diese:

{
    'name': 'test',
    'anotherdoc': {
        'something': 'someval',
        'somenum': 1
    }
}

Nun, sage ich wollte etwas setzen. Anfangs dachte ich, wäre es wie so getan werden:

collection.update({'_id': myid}, {$set: {'anotherdoc.something': 'somenewval'});

Dies ist jedoch scheint falsch zu sein. Es ist dort einige Daten setzen, aber es tut dies in einer ungeraden Weise. Es wäre in diesem Fall am Ende etwa so:

[
    {
        'name': 'test',
        'anotherdoc': {
            'something': 'someval',
            'somenum': 1
        }
    },
    ['anotherdoc.something', 'someval']
]

Natürlich nicht das, was ich suchte.

War es hilfreich?

Lösung

Die folgenden Werke für mich von der Mongo Shell - so bin ich nicht sicher, was Sie oben passiert ist. Versuchen Sie dies und sehen, ob es funktioniert? Wenn ja würde ich greifen die neuesten Mongo Code, falls etwas verwendet sagen problematisch.

x = { 'name': 'test', anotherdoc: { 'something': 'someval', somenum : 1 } }
> x
{"name" : "test" , "anotherdoc" : {"something" : "someval" , "somenum" : 1}}
> collection = db.foo;
test.foo
> collection.insert(x)
> collection.find()
{"_id" :  ObjectId( "4a61b6711591f41f0f1bc5ff")  , "name" : "test" , "anotherdoc" : {"something" : "someval" , "somenum" : 1}}
> x
{"name" : "test" , "anotherdoc" : {"something" : "someval" , "somenum" : 1}}
> x._id
> x = collection.findOne()
{"_id" :  ObjectId( "4a61b6711591f41f0f1bc5ff")  , "name" : "test" , "anotherdoc" : {"something" : "someval" , "somenum" : 1}}
> collection.update({'_id': x._id}, {$set: {'anotherdoc.something': 'somenewval'}} )
> collection.find()
{"_id" :  ObjectId( "4a61b6711591f41f0f1bc5ff")  , "name" : "test" , "anotherdoc" : {"somenum" : 1 , "something" : "somenewval"}}
> 

Wie oben erwähnt, wahrscheinlich die MongoDB-Foren schneller gesehen (oder versuchen IRC).

Andere Tipps

Sie würden besser, dies in googlegroup des mongodb Benutzer fragen. Die Antwort auf Ihre Frage ist hier http://groups.google .com / Gruppe / mongodb-user / msg / 583d37ef41ef5cca? hl = en

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top