2011-11-30 82 views
1

上的更新,我试图创建一个新的数组元素或添加到现有阵列,这是我怎么解释$ addToSet工作:

http://www.mongodb.org/display/DOCS/Updating

但我得到什么,如果 “标签” 是不存在的价值是作为一个对象,而不是一个数组:使用

:{ “FreeShipping” “0”:},

“标签”

db.collection.update({size:10.5},{$ addToSet:{tag:“FreeShipping”}});

回答

2

我只是想复制这一点,并得到正确的结果请检查以下内容:

> use test 
switched to db test 
> db.test.insert({item:"test"}); 

> db.test.findOne(); 
{ "_id" : ObjectId("4ed69f9d1812423106a229ac"), "item" : "test" } 

> db.test.update({item:"test"},{$addToSet:{tag:"FreeShipping"}}); 

> db.test.findOne(); 
{ 
    "_id" : ObjectId("4ed69f9d1812423106a229ac"), 
    "item" : "test", 
    "tag" : [ 
     "FreeShipping" 
    ] 
} 

能请你告诉你的查询添加呢?与目前使用的MongoDB版本一样,它看起来像预期的那样工作(并且正如你所假设的那样)。

谢谢!

+0

看起来像这是一个RockMongo错误。当我用shell进行查询时,我得到了正确的响应。但RockMongo显示:“tag”:{ “0”:“FreeShipping” }, – Brad

+0

有关RockMongo在地图中显示数组的详细信息,请参阅http://groups.google.com/group/mongodb-user/browse_thread/thread/58ec035fa1780101 – Brad