如何在MongoDB中组合值匹配和管道运算符?

时间:2018-01-17 10:52:10

标签: javascript mongodb

实施例

这是一个示例文档:

{
  row: [
    {
      identifier: "a"
      value: 52
    },
    {
      identifier: "b"
      value: 22
    },
    {
      identifier: "c"
      value: 36 
    }
  ]
}

问题

假设我首先需要数组(identifier c)和最后一个元素(identifier c),但只在最后一个元素中value大于5的情况下( identifier c)。

基本上,我想结合这两个条件:

  • identifier aidentifier c
  • 当你identifier c时,
  • 大于5。

这两个条件都应该是聚合管道的一部分。结果应如下所示:

[
  { 
    _id: 1, 
    row: [{ identifier: "a", value: 52}, { identifier: "c", value: 22}] 
  } //, ...
]

方法

我尝试了很多方法,但没有任何效果。我尝试的最后一件事是$cond,但这也没有用:

'if': {
  'row.identifier': c,
  'then': {
    'row.value': {$gt: 5}
  }
}

1 个答案:

答案 0 :(得分:1)

以下是如何过滤 var tuple = Tuple.Create("MyKey", "MyValue"); var list = new List<string>(); var str = tuple.ToString(); list.Add(str); // str has the value "(MyKey, MyValue)" Console.WriteLine(str); int comma = str.IndexOf(", "); string key = str.Substring(1,comma-1); string valuee = str.Substring(comma+2,str.Length-key.Length-4); var tuple2 = Tuple.Create(key, valuee); // 'tuple2' is now equal to the orignal 'tuple' 数组以仅包含您想要的内容:

row