gpt4 book ai didi

java - mongo java用于查找和更新插入嵌套数组元素

转载 作者:行者123 更新时间:2023-11-30 07:40:49 25 4
gpt4 key购买 nike

我有一个具有以下结构的 mongo 集合元素

{
"_id" : ObjectId("568eaba5e4b0fa3cdf9aaf85"),
"type" : "X",
"textId" : "568eaba5e4b0fa3cdf9aaf84",
"createDate" : "2016-01-07 18:17:09",
"likes" : [
{
"creatorName" : "ABCD",
"creationDate" : "2016-01-10 19:48:37",
"likeId" : "56932615569aae9d1459eb9b"
}
]
}

我的需求如下:当creatorName为textId标识的特定元素发布新的点赞时,我应该a) 检查特定textId 对象的creatorName 是否已存在类似信息。如果存在,则不执行任何操作b) 如果 like 不存在,我应该将一个新元素插入到 like 数组中

如何在java中有效地做到这一点?我看到我们有一个 update 方法和一个 findAndModify 方法。使用哪一个以及如何以最有效的方式处理这个问题?

最佳答案

<强> Unique indexes

您可以按如下方式创建唯一索引:

db.collection.createIndex( { "likes.creatorName": 1 }, { unique: true } )

正如官方文档所述:

A unique index causes MongoDB to reject all documents that contain a duplicate value for the indexed field.

如果creatorName已经存在,写入操作将失败,如下所示:

WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "E11000 duplicate key error index: test.collection.$likes.creatorName_1 dup key: { : 1.0 }"
}
})

那么,你不需要担心creatorName是否已经存在。

另一方面,如果您需要知道creatorName是否已存在,则需要查看WriteResult返回值(0或1)。

关于java - mongo java用于查找和更新插入嵌套数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34728837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com