汇总数组属性是否包含对象

时间:2018-11-01 20:36:52

标签: node.js mongodb

说明


使用博客应用程序,用户可以在其中喜欢基于ip的博客。 IP存储在likes文档的blog属性中。

我想编写一个查询来添加一个名为liked的额外布尔属性,如果likes数组包含输入ip,则为true。

问题


如果文档的数组属性包含某个输入对象,如何将新的布尔属性添加到查询结果中?

示例


数据库中的当前数据是:

 [
     { _id:123123,
      title: "title here",
      desc: "some other text here",
      likes: [
       {ip: "10.0.0.1"},
       {ip: "0.1.1.1"},
       // ... a lot more {ip: "..."}
      ]
     },
     { 
        // the next blog document...
     },
     // all other blog documents...
 ]

我从查询输出中期望的是:

[
 {   _id:123123,
      title: "title here",
      desc: "some other text here",
      liked: true // if the array contains {ip: "10.0.0.1"}
      ]
 },
 {
      _id:2,
      title: "another"
      desc: "some text",
      liked: false
 },
//...
]

注释


我正在使用他的官方MongoDB驱动程序用于NodeJS。 (see documentation

到目前为止我想出了什么:

   dbo.collection('blogs')
                     .aggregate([{ $project: { 
                        title:1,
                        desc:1,
                        liked: {$cond: {if: {// TODO: not sure what to write here...}},
                     }}]) 

0 个答案:

没有答案