在mongodb查询中添加自定义字段

在mongodb查询中添加自定义字段,mongodb,mongodb-.net-driver,mongodb-query,Mongodb,Mongodb .net Driver,Mongodb Query,我对mongodb中的一个集合有一个问题 这是我的集邮 { "_id" : ObjectId("530f67584fb1a510bc18c03f"), "creatorId" : "5f6f2c26-4101-4eae-90d1-20d109bea925", "creationDate" : ISODate("0001-01-01T00:00:00Z"), "category" : 23, "location" : [ -60.67045855832774,

我对mongodb中的一个集合有一个问题

这是我的集邮

{ 

  "_id" : ObjectId("530f67584fb1a510bc18c03f"),
  "creatorId" : "5f6f2c26-4101-4eae-90d1-20d109bea925",
  "creationDate" : ISODate("0001-01-01T00:00:00Z"),
  "category" : 23,
  "location" : [
      -60.67045855832774,
       52.86982649605247
  ], 
 "replies" : 
    [
       {
        "_id" : ObjectId("531acfc34fb1a50edc86fdcb"),
       "creatorId" : "0891f887-a6bc-4183-be10-2653b7b45e79"
       },
       {
      "_id" : ObjectId("531acfc34fb1a50edc86fdcb"),
     "creatorId" : "0891f887-a6bc-4183-be10-2653b7h76s22"
   }
]
}

我通过正在查看页面的clientId和多边形执行查询,以返回多边形区域中的所有帖子,我想添加自定义字段,因为我想知道以下信息:

  • 如果Post是我的(clientId==creatorId)

    • 如果有回复(replies.count>0)
  • 如果这个职位不是我的

    • 如果有一个我的回复(有一个回复为reply.creatorId==clientId)
我只想在一个查询中这样做,因为我想查看所有帖子列表,并知道帖子的颜色标记是什么

我想要的结果是这样的(如果可能的话)或返回所需信息的其他内容

{

}

提前谢谢


好的,find不能这样做。但是有一种模糊的方法可以通过使用来获得结果。因此,假设您有一个
creatorId
变量,该变量位于您的Id中:

db.collection.aggregate([
//匹配你的帖子
{“$match”:{“creatorId”:creatorId},
//展开阵列
{“$REWIND”:“$replies”},
//投影所需的字段,注意逻辑条件
{“$project”:{
"类别":一,,
“地点”:1,
“isMine”:{“$eq”:[“$creatorId”,creatorId]},
“回答”:{“$eq”:[
“$replays.creatorId”,
创造者
]}
}},
//在唯一文档上分组,获取总和和最大值
{“$组”:{
“_id”:{
“\u id”:“$\u id”,
“类别”:“$category”,
“位置”:“$location”,
“isMine”:“$isMine”,
},
“答复:{“$sum”:1},
“OneAnswerIsMine”:{“$max”:“$answerIsMine”}
}},
//更好的输出
{“$project”:{
“\u id”:“$\u id.\u id”,
“类别”:“$\u id.category”,
“位置”:“$\u id.location”,
“isMine”:“$\u id.isMine”,
“答复”:1,
“一个回答”:1
}}
])
除其他事项外,您的“自定义字段”是通过使用逻辑运算符生成的。在此,我们将
creatorId
的字段值与存储的的变量值进行比较。当它们“相等”时,条件为
true
,否则为
false

因此,欢迎使用聚合。这是一个非常强大的工具,可以获得您想要的结果,您不仅可以将内容“分组”,还可以将文档转换为您想要的形式


请参阅您的驱动程序文档以了解语言详细信息(这里为大家提供的是JSON),但您基本上是在管道的每个阶段形成BSON文档。

难以置信!!非常感谢您。我立即尝试。最后一个问题:我可以插入地理多边形“和条件”吗?再次感谢Luca
  "_id" : ObjectId("530f67584fb1a510bc18c03f"),
  "category" : 23,
  "location" : [
      -60.67045855832774,
       52.86982649605247
  ],
  "isMine" : true,
  "replies" : 20,
  "OneAnswerIsMine": false