求助啊,tp下,mongodb如何查询后只返回某个字段值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助啊,tp下,mongodb如何查询后只返回某个字段值相关的知识,希望对你有一定的参考价值。

参考技术A 这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下
映射(projection )声明用来限制所有查询匹配文档的返回字段。projection以文档的形式列举结果集中要包含或者排除的字段。可以指定要包含的字段(例如:{field:1})或者指定要排除的字段(例如:{field:0})。默认_id是包含在结果集合中的,要从结果集中排除_id字段,需要在projection中指定排除_id字段({_id:0})。除了_id字段,不能在一个projection中联合使用包含和排除语意。

返回匹配文档的所有字段:

如果没有指定projection,find()方法返回所有匹配文档的所有字段。

复制代码代码如下:
db.inventory.find( type: 'food' )

这个例子将返回inventory集合中type字段的值为"food"的所有文档,返回的文档包含全部字段。

返回指定字段和_id字段:

一个projection可以明确地指定多个字段。下面的操作中,find()方法返回匹配的所有文档。在结果集中,只有item和qty字段,默认_id字段也是返回的。

复制代码代码如下:
db.inventory.find( type: 'food' , item: 1, qty: 1 )

仅返回指定字段:
可以通过在projection中指定排除_id字段将其从结果中去掉,如下例子所示:

复制代码代码如下:
db.inventory.find( type: 'food' , item: 1, qty: 1, _id:0 )

返回除排除掉以外的字段:
可以使用一个projection排除一个或者一组字段,如下:

复制代码代码如下:
db.inventory.find( type: 'food' , type:0 )

这个操作返回所有type字段值为food的文档,在结果中type字段不返回。

数组字段的projection:
$elemMatch 和 $slice运算符是对数组进行projection的唯一途径。本回答被提问者和网友采纳

如何将 Mongodb 聚合管道文档返回到一个文档?

【中文标题】如何将 Mongodb 聚合管道文档返回到一个文档?【英文标题】:How to return Mongodb Aggregate pipeline docs to ONE document? 【发布时间】:2021-11-16 05:51:13 【问题描述】:

我知道这一定很简单,但在我的一生中,我似乎无法在我的管道中生成正确的最后阶段来使其正常工作。以下是我在 mongo 查询中的某个阶段的文档输出:

 "_id" : ObjectId("61435ceb233ce0118c1d93ec") 
 "_id" : ObjectId("61435cf29598d31c17f0d839") 
 "_id" : ObjectId("611e5cf953396d78985d222f") 
 "_id" : ObjectId("61435cf773b8b06c848af83e") 
 "_id" : ObjectId("61435cfd7ac204efa857e7ce") 
 "_id" : ObjectId("611e5cf953396d78985d2237") 

我想将这些文档放入一个带有数组的单个文档中:

 
   "_id" : [
      ObjectId("61435ceb233ce0118c1d93ec"),
      ObjectId("61435cf29598d31c17f0d839"),
      ObjectId("611e5cf953396d78985d222f"),
      ObjectId("61435cf773b8b06c848af83e"),
      ObjectId("61435cfd7ac204efa857e7ce"),
      ObjectId("611e5cf953396d78985d2237")
   ]

我在管道中的最后一个阶段很简单:


   $group:_id:"$uniqueIds"

我尝试了从 $push 到 $mergeObjects 的所有方法,但无论我做什么,它都会以某种形状或形式返回原始的 6 个文档,而不是一个文档。任何建议将不胜感激!提前致谢。

【问题讨论】:

【参考方案1】:

Test code here

查询

按 null 分组,将所有集合视为 1 个组
db.collection.aggregate([
  
    "$group": 
      "_id": null,
      "ids": 
        "$push": "$_id"
      
    
  ,
  
    "$unset": "_id"
  
])

【讨论】:

谢谢塔基斯!!效果很好! mongodb 文档很好,也有例子。

以上是关于求助啊,tp下,mongodb如何查询后只返回某个字段值的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式强制 mongoose 查询并返回 mongodb 集合中的某个字段?

求助mongodb 有索引后查询卡死问题

mongodb 查询求助,嵌套数组里面查东西

java 如何查询mongodb字段名称?

MongoTemplate实现根据某个字段分类查询

如何从mongodb的表中读取各字段对应的类型