database - 如何仅查找mongo中的特定字段

标签 database mongodb lookup

如何只加入特定字段?使用 $lookup 时,mongo 返回整个文档。

假设这是我的数据:

用户

[
    { id: 0, name: "Bob", adj: 1 },
    { id: 1, name: "Will", adj: 2 },
]

形容词

[
    { id: 1, name: "awesome" },
    { id: 2, name: "cool" },
]

我想做一个查找,所以响应应该是这样的:

[
    { id: 0, name: "Bob", adj: 1, adj_value: "awesome" },
    { id: 1, name: "Will", adj: 2, adj_value: "cool" },
]

这是我的尝试

db.collection('users').aggregate([
    {
        $lookup: {
            from: 'adjectives',
            localField: 'adj',
            foreignField: 'name',
            as: 'adjective_value'
         },
     },
 ])

但是它将整个文档插入到用户文档中。如何在响应中只获取单个字段?

最佳答案

$project 管道中,您可以从查找集合对象中获取单个字段。

db.collection('users').aggregate([
    {
        $lookup: {
            from: 'adjectives',
            localField: 'adj',
            foreignField: 'id',
            as: 'adjective_value'
         },
     },
    {$unwind:'$adjective_value'},
    {$project:{
         adjective_value:'$adjective_value.name',
         id: 1, 
         name: 1, 
         adj: 1
    }}
 ])

关于database - 如何仅查找mongo中的特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49054448/

相关文章:

iphone - 什么是原子存储类型?

java - 监视共享文件夹的更改并拉取到数据库

javascript - MongoDB 计数未返回正确的数字

node.js - 在 mongoose/mongodb/node 中使用异步回调循环

java - 为什么我无法使用 mongoTemplate.remove 删除数据

php - Drupal - 如何获取行的总和

mysql - 如何设计问答数据库(MySql)

mongodb加入多个集合

javascript - JSON - 基于唯一 ID 的值搜索数组

python - Pandas:相当于Python中的Excel查找