MongoDB - 密钥没有重复条目

时间:2014-04-08 10:41:45

标签: mongodb mongo-shell

首先,我已经阅读了this thread,但这并没有真正帮助我解决这个问题。我也是MongoDB的新手。

我的db.songs集合中有一个文档:

{
    "title" : "Ignorance"
    "artist" : "Paramore"
    "listeners" : ["John", "Bill", "Amber"]
}

我希望在users键上强制执行不重复,这样每当我按“John”或现有用户时,我都会收到错误消息。我可以在mongo shell中执行此操作,如果是这样,我如何配置我的集合以使用此行为?

一些示例代码应该给我一个重复的错误(或一些类似的错误):

db.songs.update({title:"Ignorance"}, {'$push':{listeners:"John"}})

提前谢谢。

1 个答案:

答案 0 :(得分:1)

db.songs.ensureIndex({listeners:1},{unique:true})

添加此索引不起作用。 MongoDB不会使用唯一索引确保子文档中的唯一性,而是在集合范围内进行集合。这很可能是你为什么会遇到错误的原因。

相反,您要做的是使用将项目添加到" set"项目,即$ addToSet(http://docs.mongodb.org/manual/reference/operator/update/addToSet/)的来源。

删除索引并使用该运算符,它应该可以正常工作。