1

新しいドキュメントを作成する

>>>Categories.insert({'test':'test'})
ObjectId('506b563df49a007f73000001')

はい、作成OKです。

>>> Categories.find_one({'test':'test'})
{u'test': u'test', u'_id': ObjectId('506b4149f49a007cd0000000')}

値が「hello」の新しい属性「newAttr」を指定します

>>> Categories.update({'_id':Categories.find_one({'test':'test'})['_id']},{'newAttr':'hello'})

同じドキュメントを検索

>>> Categories.find_one({'test':'test'})
{u'test': u'test', u'_id': ObjectId('506b563df49a007f73000001')}

更新されてない??

新しい属性を含むものを検索します。

>>> Categories.find_one({'newAttr':'hello'})
{u'newAttr': u'hello', u'_id': ObjectId('506b4149f49a007cd0000000')}

以前のドキュメントを更新するのではなく、別のドキュメントを作成しましたか??

これを修正する方法はありますか?

4

1 に答える 1

3

新しいフィールドを設定するときと同じ結果にはなりませんが、次の構文を使用しています。

cat.update({'_id':cat.find_one({'test':'test'})['_id']},{'$set':{'newattr':'hello'}})

$set の説明については、こちらを参照してください。

>>> cat.find_one({'test':'test'})
{u'newattr': u'hello', u'test': u'test', u'_id': ObjectId('506b5d07594bc07d90000000')}
于 2012-10-02T21:39:09.690 に答える