gpt4 book ai didi

MongoDB - 嵌入文档列表中的 $addToSet

转载 作者:行者123 更新时间:2023-12-02 01:54:43 33 4
gpt4 key购买 nike

我在一个文档中有一个(mongodb)嵌入文档列表,我有兴趣将一个新的嵌入文档添加到现有文档列表中。

据我研究,我可以使用 $addToSet,我不明白的是 MongoDB 如何决定新文档是否已存在于嵌入文档列表中或者是否是新文档,即如何MongoDB 判断 2 个嵌入文档是否相等?

附:我拥有的嵌入文档不仅仅是值,它们是相当复杂的结构,所以我想知道是否有任何地方可以定义其中两个之间的相等意味着什么......

最佳答案

$addToSet 使用通常的 mongodb equality rules :它将进行深入的逐值比较,因此以下两个文档是相同的:

{ name: "John", hobbies: ["coding", "drinking", "chess"] }
{ hobbies: ["coding", "drinking", "chess"], name: "John" }

(文档中的顺序 is not guaranteed ,因此它们是相同的)

虽然那些不是(成对):

// compare to:
{ name: "John", hobbies: ["chess", "coding", "drinking"] }

// in arrays, the order matters:
{ name: "John", hobbies: ["coding", "drinking", "chess"] }

// field names and values are case sensitive
{ Name: "John", hobbies: ["chess", "coding", "drinking"] }
{ name: "john", hobbies: ["chess", "coding", "drinking"] }

// additional field:
{ name: "John", lastName: "Doe", hobbies: ["chess", "coding", "drinking"] }

// missing field:
{ name: "John" }

请注意,这里没有特殊字段。您可以添加 _id 字段,但它没有特殊语义,并且将像任何其他字段一样被处理。

关于MongoDB - 嵌入文档列表中的 $addToSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21576282/

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