我在MongoDB中的多键索引有问题。MongoDB - 唯一的多键索引不按预期工作
我有一个名为users
集合,它的文档看起来或多或少是这样的:
{
"_id": ObjectId(),
"name": "John Smith",
...
"votes": [
{
"type": "news",
"votedObjectId": "123"
},
{
"type": "blog",
"votedObjectId": "124"
},
{
"type": "news"
"votedObjectId": "225"
}
]
}
我想创建votedObjectId
的指标,我希望用户在每篇文章只有一次投票。
我保证唯一索引(代码在node.js中 - mongoskin模块):
`this.ensureIndex({'votes.votedObjectId': 1}, {unique: true}, ...)`
然后我试图在同一篇文章中两次投票,它实际上增加了完全相同的两次投票。我如何确保数组不会包含重复的元素?
P.S.
我做了所有使用{safe:true}的插入,并且我得到的重复值不是由插入操作返回的,而是实际插入到集合中的。
谢谢。程序级别唯一性检查+ $ addToSet而不是$ push似乎是我最好的解决方案。 – lortabac