当前位置: 首页 > 知识库问答 >
问题:

向输出json添加附加属性

孟栋
2023-03-14

有一个用户集合

{
    "_id" : ObjectId("5a0d45ca8af3a91847b7cf95"),
    "updatedAt" : ISODate("2017-11-16T09:34:14.651Z"),
    "createdAt" : ISODate("2017-11-16T08:01:14.119Z"),
    "name" : "John",
    "email" : "test1@gmail.com",
    "groupsFavorite" : [ 
        ObjectId("5a0d45db8af3a91847b7cf96")
    ],
    "groups" : [ 
        ObjectId("5a0d45db8af3a91847b7cf96"), 
        ObjectId("5a0d45e18af3a91847b7cf97")
    ],
    "__v" : 3
}
/* 1 */
{
    "_id" : ObjectId("5a0d45db8af3a91847b7cf96"),
    "updatedAt" : ISODate("2017-11-16T08:01:31.815Z"),
    "createdAt" : ISODate("2017-11-16T08:01:31.815Z"),
    "userId" : ObjectId("5a0d45ca8af3a91847b7cf95"),
    "title" : "New title",
    "slug" : "new-title-1",
    "description" : "Lorem",
    "__v" : 0
}

/* 2 */
{
    "_id" : ObjectId("5a0d45e18af3a91847b7cf97"),
    "updatedAt" : ISODate("2017-11-16T08:01:37.005Z"),
    "createdAt" : ISODate("2017-11-16T08:01:37.005Z"),
    "userId" : ObjectId("5a0d45ca8af3a91847b7cf95"),
    "title" : "New title",
    "slug" : "new-title-2",
    "description" : "Lorem",
    "__v" : 0
}

/* 3 */
{
    "_id" : ObjectId("5a0d5cb0cd59342da943d55a"),
    "updatedAt" : ISODate("2017-11-16T09:38:56.912Z"),
    "createdAt" : ISODate("2017-11-16T09:38:56.912Z"),
    "userId" : ObjectId("5a0d5c48cd59342da943d559"),
    "title" : "New title",
    "slug" : "new-title-3",
    "description" : "Lorem",
    "__v" : 0
}
{
    "_id" :"5a0d45db8af3a91847b7cf96",
    "updatedAt" : "2017-11-16T08:01:31.815Z",
    "createdAt" : "2017-11-16T08:01:31.815Z",
    "userId" : "5a0d45ca8af3a91847b7cf95",
    "title" : "New title",
    "slug" : "new-title-1",
    "description" : "Lorem",
    "favorite": "true"
},
{
    "_id" : "5a0d45e18af3a91847b7cf97",
    "updatedAt" : "2017-11-16T08:01:37.005Z",
    "createdAt" : "2017-11-16T08:01:37.005Z",
    "userId" : "5a0d45ca8af3a91847b7cf95",
    "title" : "New title",
    "slug" : "new-title-2",
    "description" : "Lorem",
    "favorite": "false"
},
{
    "_id" : "5a0d5cb0cd59342da943d55a",
    "updatedAt" : "2017-11-16T09:38:56.912Z",
    "createdAt" : "2017-11-16T09:38:56.912Z",
    "userId" : "5a0d5c48cd59342da943d559",
    "title" : "New title",
    "slug" : "new-title-3",
    "description" : "Lorem",
    "favorite": "false"
}

共有1个答案

陈马鲁
2023-03-14

可以使用$lookup运算符检查“user”集合中的_iduserid字段。也可以使用$eq运算符来确定它是否在。

db.getCollection('Groups').aggregate([
   {
      $lookup:
      {
        from: "User",
        localField: "_id",
        foreignField: "groupsFavorite",
        as: "FavoriteByGrp"
      }
   }
  ,{
      $lookup:
      {
        from: "User",
        localField: "userId",
        foreignField: "_id",
        as: "FavoriteByUsr"
      }
   }
  ,{
       "$project":
       {
           _id:1,
           updatedAt:1,
           createdAt:1,
           userId:1,
           title:1,
           slug:1,
           description:1,
           favorite: 
           { 
               "$cond": 
               { 
                   if: { "$eq": [ "$FavoriteByGrp._id", "$FavoriteByUsr._id" ] }, 
                   then: "true", 
                   else: "false" 
               } 
           }
       }

   }
 ])

结果:

/* 1 */
{
    "_id" : ObjectId("5a0d45db8af3a91847b7cf96"),
    "updatedAt" : ISODate("2017-11-16T08:01:31.815Z"),
    "createdAt" : ISODate("2017-11-16T08:01:31.815Z"),
    "userId" : ObjectId("5a0d45ca8af3a91847b7cf95"),
    "title" : "New title",
    "slug" : "new-title-1",
    "description" : "Lorem",
    "favorite" : "true"
}

/* 2 */
{
    "_id" : ObjectId("5a0d45e18af3a91847b7cf97"),
    "updatedAt" : ISODate("2017-11-16T08:01:37.005Z"),
    "createdAt" : ISODate("2017-11-16T08:01:37.005Z"),
    "userId" : ObjectId("5a0d45ca8af3a91847b7cf95"),
    "title" : "New title",
    "slug" : "new-title-2",
    "description" : "Lorem",
    "favorite" : "false"
}

/* 3 */
{
    "_id" : ObjectId("5a0d5cb0cd59342da943d55a"),
    "updatedAt" : ISODate("2017-11-16T09:38:56.912Z"),
    "createdAt" : ISODate("2017-11-16T09:38:56.912Z"),
    "userId" : ObjectId("5a0d5c48cd59342da943d559"),
    "title" : "New title",
    "slug" : "new-title-3",
    "description" : "Lorem",
    "favorite" : "false"
}
 类似资料:
  • 问题内容: 假设我有一个处理待办事项清单的应用程序。清单中已完成和未完成的项目。现在,我想向列表对象添加两个虚拟属性。列表中已完成和未完成项目的计数。我还需要将这些显示在json输出中。 我的模型中有两种方法可以提取未完成/已完成的项目: 那么,如何在json输出中获得这两种方法的计数? 我正在使用Rails 3.1 问题答案: Rails中对象的序列化包括两个步骤: 首先,调用将对象转换为简化的

  • 问题内容: 我正在运行一个基于Java Spring MVC的Web应用程序。它还基于Hybris平台。 现在,已经实现了有关身份验证和授权的基本功能。意味着我们确实有用于会话,有效的用户系统等的过滤器。 但是,我们目前还没有针对诸如XSS和其他可能的攻击之类的安全措施。XSS可能是最大的问题,因为它是最常见的攻击方式。 现在,我不知道……明智地采取什么步骤?我环顾四周,我发现存在像XSS-Fil

  • 问题内容: 我将json字符串存储到mysql中的文本字段中。插入后,我想更新我的json字符串,并使用jackson json将mysql行ID添加到其中。 我有一个Json格式的Java字符串 我希望添加另一个K / V,而无需编写代码行。 终于有了这个: 我可以将String转换为JsonNode: 想要做这样的事情 然后在mysql中使用新的json字符串在我的文本字段中更新 我做不到 我

  • 我将json字符串存储到MySQL中的文本字段中。插入之后,我希望更新我的json字符串,并使用jackson json将mysql行id添加到其中。 我有一个Json格式的java字符串

  • 你能帮我解决这个问题吗? 我在类<code>单元格</code>中创建按钮,并向该按钮添加一些默认操作。 在< code>Game类中,我想给这个按钮添加额外的动作,但我也想保留默认动作。 我知道新操作覆盖了以前的操作。因此,如果我单击按钮,它只会打印。 是否可以向按钮添加新操作并保留以前的连接?

  • 问题内容: 我正在使用网络上的标准示例(http://www.20seven.org/journal/2008/11/pdf-generation-with-pisa-in-django.html)将django视图/模板转换为PDF。 是否有一种“简便”的方式将图像(来自URL或服务器上的引用)包括在模板中,以便它们显示在PDF上? 问题答案: 我得到了图像。代码如下: