查找来自一个字段的值不为null且不在另一个字段中的MongoDB文档

莫里斯

我试图选择一个文档,该文档的字段值不存在,并且对于同一集合中的其他字段,该字段值也不为null。这是我收藏中文件的简化表示。

"item" : {
    id: "abc",
    previousid: null
},
"item" : {
    id: "def",
    previousid: "abc"
},
"item" : {
    id: "pqr",
    previousid: "def"
},
"item" : {
    id: "xyz",
    previousid: "pqr"
}

我需要找到一个记录,该记录的ID未被用作先前的记录,并且谁的先前记录不为null。在上述情况下,我希望最后一条记录(版本“ xyz”)将被返回,因为“ xyz”未被用作优先顺序。自我指责的东西给我带来了麻烦。

用伪代码,它将是:

select item where id does not exist as previousid and previousid is not null

我对MongoDB相对较新(但对数据库而言不是)。我凝视着的文档几个小时,试过无数方法,如$ne$nin$and$expr,但我明显失去了一些东西。

阿什

您可以$graphLookup用来检查指定集合中字段的存在,并过滤文档中不存在该文档的文档。priviousId

db.collection.aggregate([
  { "$graphLookup": {
    "from": "collection",
    "startWith": "$id",
    "connectFromField": "id",
    "connectToField": "previousid",
    "as": "data"
  }},
  { "$match": { "data": [] }}
])

蒙哥运动场

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

基于Jackson中另一个字段值的条件字段要求?

如何查找一个字段的值与另一个字段的值匹配的所有文档

MongoDB:如何为集合中的每个文档设置一个新字段,该字段等于另一个字段的值

添加新字段,它是文档中另一个字段的大小

根据另一个字段更新一个字段

需要一个字段或另一个字段

根据另一个字段的值禁用一个字段

查找某个字段与数组中另一个字段进行比较的文档

MongoDB将ObjectId从一个字段移动到另一个字段

根据另一个字段的值在MongoDB中投影一个字段

通过另一个字段mongodb查找不同的值组

按来自另一个字段的值对文档进行分组

将setFieldValue用于一个字段,基于另一个字段的值

Mongodb在一个字段上查询取决于另一个字段

获取一个字段的最大值,但仅针对另一个字段中具有相同值的其他文档

MongoDB使用另一个字段的值添加新字段

Elasticsearch:查找一个字段与另一个字段的重叠

mongoDB $ set问题,使用文档的键值/另一个字段值

根据文档中的另一个字段更新字段

根据MongoDB文档中的另一个字段更新一个字段(在Node.js中使用Mongoose)

如何根据另一个字段中的值在一个字段中查找和替换?

仅在mongodb中的字段小于另一个字段时更新

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

Mongodb字段值作为另一个字段

当另一个字段值更改时更新一个字段值

Rails - 如果另一个字段不为空,则验证字段

如何使用 nodejs 通过 objectId 和 mongodb 中的另一个字段查找文档?

检查一个字段的值是否在另一个字段中

一个字段基于另一个字段的求和