在Mongoose的同一文档中查询3个不同嵌套数组中的字段?

代码.mevn

下面是我的模式设计

const Schema1 = mongoose.Schema({
      _id: false,
      id: { type: mongoose.Schema.Types.ObjectId,
        ref: 'UserinfoSchema' 
      },
      name: { type: String , default: null },
      from: { type: Date, default: Date.now }
})

const ProfileSchema = mongoose.Schema({
  profilename:{
    type: String,
    required: true
  },
  list:{
    acceptedList:[ Schema1 ],
    requestedList:[ Schema1 ],
    pendingList:[ Schema1 ]
  }
})

我想建立一个查询,该查询在所有嵌套的数组(即acceptedList,requestedList,pendingList)中进行查询,并找出id是否存在,如果id在任何列表中都不存在,则更新请求的列表。

任何一种技术都是有帮助的。性能是关键。

尼古拉斯

您可以使用$or运算符来做到这一点:

db.Collection.update({
    $or: {
        "list.acceptedList": {$nin: [your_id]},
        "list.requestedList": {$nin: [your_id]},
        "list.pendingList": {$nin: [your_id]}
    }
}, {
    $addToSet: {
        "list.requestedList": your_id
    }   
});

$nin带有[your_id]运算符检查您的ID是否不在3个数组中,因此必须使用[],因为它仅允许使用数组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MongoDB-如何验证同一文档的另一个嵌套数组项中是否包含嵌套数组项?

在 Firestore 中更新同一文档的 10 个不同字段。顺序重要吗?

同一文档中3个字段的平均值

同一文档中的不同内容

MongoDB:更新同一文档的嵌套元素中的字段

如何连接同一文档中的数组?

用同一文档中数组的第一个元素替换字段值

比较同一文档中的两个数组字段

如何在MongoDB更新中将字段的值推入同一文档的另一个数组字段中

使用字段值更新同一文档中的另一个字段

使用同一文档中的字段减少 mongodb 中的字段

如何在同一文档中检查 6 个值中的任意 3 个

同一文档中以及文档之间的Concat数组

Mongoose 聚合以在同一文档中按父 ID 分组

在每个文档中添加一个新字段,并在mongodb中为同一文档的另一个字段赋值

在多个网站中引用同一文档

同一文档中的img src = svg

如何在mongo中匹配来自同一文档的字段值?

在Firestore交易中更新同一文档的多个字段时的定价

如何在mongo中检查同一文档中的两个值?

使用聚合将文档的一个字段与同一文档的数组大小进行匹配

MongoTemplate更新为同一文档在数组中设置多个对象

在猫鼬模式中创建一个字段,该字段引用同一文档中的其他字段

在一个数组中合并两个对象,一个对象的键嵌套在 Mongo DB 的同一文档中比另一个更深

通过ID将对象以原子方式从一个数组移动到同一文档中的另一个数组

如何将特定字段的值分配给 Firestore Swift 中同一文档内的另一个字段?

使用同一文档中的值从JSONB文档中的数组中选择项目

MongoDB 聚合:用同一文档中数组中的相应对象替换 ID 数组

XQuery / Xpath优化:查询同一文档的不同部分