我正在尝试创建唯一的索引在scorecardlist.filename字段在下面提到的mongo集合。目的是我们不能在scorecardList中创建具有相同文件名的其他元素。
Mongo架构:
{
"Name": "Ravikant Khond",
"PIN" : "411057",
"scorecardList": [
{
"fileName" : "ScoreCard_April_2016.pdf",
"runDate" : ISODate("2016-05-01T00:00:00.000Z"),
"month" : "April",
"year" : "2016"
},
{
"fileName" : "ScoreCard_May_2016.pdf",
"runDate" : ISODate("2016-06-01T00:00:00.000Z"),
"month" : "May",
"year" : "2016"
}
]
}
[1]
我在创建唯一索引时尝试使用的Mongo命令如下:
db.testing.createIndex(
{ "scorecardList.filename": 1 },
{
unique: true,
partialFilterExpression: {
"scorecardList.filename": { $exists: true }
}
}
);
对于数组,不能强制执行完全唯一性
据我所知,唯一索引仅在不同文档之间强制唯一性,因此这将引发重复键错误:
db.food.insert( { id: 123, name:bread, ingredients: [ { id: 456 } ] } )
db.food.insert( { id: 123, name:bread, ingredients: [ { id: 456 } ] } )
但这是允许的:
db.food.insert( { id: 123, name:bread, ingredients: [ { id: 456 }, { id: 456 } ] } )
我不确定是否有任何方法在Mongo级别执行您所需的约束,也许您可以在插入更新时在应用程序逻辑中检查这些约束?
或者,使用$AddToSet函数可以在添加值之前检查值是否已经存在。
本文向大家介绍如何在MongoDB聚合中将数组元素的子集相加?,包括了如何在MongoDB聚合中将数组元素的子集相加?的使用技巧和注意事项,需要的朋友参考一下 要将数组元素的子集加在一起,请使用$first和$sum。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 这是将MongoDB聚合中数组元素的子集加在一起的查询- 这将产生以下输出-
在上面的屏幕截图中,您可以看到我从mongo数据库中的测试集合中打开了一个名为(1)ObjectId(572b…ec7a)的文档。(测试集合中充满了这样的文档)在屏幕截图底部附近,您可以看到一个名为Name的字段,该字段的类型为string,值为EditMessagesSettings。我想查询tests集合并返回任何包含特定名称的文档(如本例中的EditMessagesSettings)。我该怎
我有一张桌子,不知怎的,同一个人进了我的桌子两次。现在,主键只是一个自动编号,但还有两个字段存在,我想强制它们是唯一的。 例如,这些字段是: 我只想要一张带有唯一PersonNumber和Active=1的唱片 (因此这两个字段的组合必须是唯一的) SQL server中现有表的最佳方式是什么?我可以这样做,如果其他任何人使用与现有值相同的值进行插入,则插入失败,因此我不必在应用程序代码中担心这一
我有一个数据结构,其中一个主题有许多问题(一对多),一个问题有许多答案(一对多)。 我已经在主题表单中设置了问题作为嵌入式集合,由于有了烹饪书条目,我可以百分之百地解决所有问题。 当我试图开发它以在问题表单中嵌入一组答案表单时,我遇到了一个问题。 包含顶层原型表单的数据原型属性具有表单的全部深度,因此包括问题和答案的原型。但它对每个级别使用相同的占位符。 你可以在底部看到一条很长的线,我想这就是原
我们试图使用以下源代码在组合框中显示树状结构https://fiddle.sencha.com/#fiddle/g50 我们可以在组合框中查看树结构,但是当我们选择任何节点时,它不会显示在组合框中。
问题内容: 假设mongodb文档(表)“用户”为 我想找到获得“国家奖章”的人,必须在1975年获得该奖。可能会有其他人在不同的年份获得此奖。 如何使用奖励类型和年份查找此人。这样我就可以找到确切的人。 问题答案: 正确的方法是: 允许您在同一数组元素中匹配多个组件。 没有mongo的用户会在1975年代和某些奖项中寻找获得National Medal的用户,但不会寻找1975年获得Nation