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

Mongodb:无法从findOne{引擎:1}返回所选数据

公宜春
2023-03-14

如何向findOne添加第二个参数{Engine: 1,_id: 0}以仅返回引擎数组{make:"Acrua", model:"CL", age:"1997"}。此集合中的所有文档都是唯一的。我应该使用查找而不是findOne。我只想访问一个文档并将引擎数组发送到客户端。

[
  {
    make: "Acura",
    model: null,
    year: null,
    engine: ["2.0L", "2.8L"]
  },
  {
    make: "Acura",
    model: "CL",
    year: null,
    engine: ["3.2L", "4.0L"]
  },
  {
    make: "Acura",
    model: "CL",
    year: "1997",
    engine: ["2.2L", "3.0L"]
  }
]


app.get("/ajax_/:tab/:category/:make/:model/:year", function (req, res) {
  db.collection("Autos_").findOne({make: req.params.make, model: params.model, year: req.params.year}, function(err, result) {

    if (result) {
      console.log(result);
    }
  });
})

共有2个答案

萧嘉茂
2023-03-14

由于某些原因,您的参数可能未定义,因此您必须将它们显式设置为null。仅将引擎投影为{_id: 0, Engine: 1}只能投影引擎文件。因此,如果存在,您可以轻松返回result.engine

app.get("/ajax_/:tab/:category/:make/:model/:year", function (req, res) {

   let make = req.params.make? req.params.make : null ;
   let model = req.params.model? req.params.model : null;
   let year = req.params.year ? req.params.year : null;

   db.collection("Autos_").findOne(
            {make: make, model: model, year: year},
            {_id:0, engine:1},
            function(err, result) {
                     if( err ) {
                           // internal error
                           throw new Error( err);
                     }
                     if (result) {
                          console.log(result.engine);
                     }
            });
})
陆展
2023-03-14

当您将“结果”记录到控制台时,它是什么样子的?您只需选择要查找的属性值并以这种方式返回即可。根据MongoDB文档:

findOne结果文档
您不能将游标方法应用于findOne()的结果,因为返回了单个文档。您可以直接访问该文档:

var myDocument = db.bios.findOne();

if (myDocument) {
   var myName = myDocument.name;

   print (tojson(myName));
}

指定要返回的字段
以下操作在bios集合中查找文档,并仅返回名称、contribs和\u id字段:

db.bios.findOne(
    { },
    { name: 1, contribs: 1 }
)

https://docs.mongodb.com/manual/reference/method/db.collection.findOne/

 类似资料:
  • 支持多线程环境以及大量数据并发下的C++用MongoDB驱动

  • 问题内容: 使用SQL Server 2012: 产量 必须指定要从中选择的表 这正是我所期望的。 但有趣的是 返回1。 有人可以向我解释这里算什么吗? 编辑:并可能包括来源… 问题答案: SQL Server(在幕后)有效地将from应用于仅具有一行的虚拟表。因此,您将得到1作为计数。 会做同样的事情,例如,一次返回“ test”。 就像Oracle中的DUAL表,DB2中的SYSDUMMY1等

  • 我的角度控制器中有一个对象数组。 我想返回数组中字段的索引值,该字段具有与我的参数匹配的 ID。 数组中只有一个具有匹配 的对象。

  • 我刚刚开始学习平均堆栈,我被卡住了。我需要将下面的查询数据发送到前端。 我试过这样做,但没有成功

  • 问题内容: 我有一个带有多个对象的集合“ companies”。每个对象都有“ _id”参数。我正在尝试从数据库获取此参数: 因此,我请求公司/ 4fcfd7f246e1464d05000001(4fcfd7f246e1464d05000001是我需要的对象的_id- parma),并且findOne不返回任何内容,这就是为什么console.log(’该公司没有数据’); 执行。 我绝对确定我有

  • 我刚开始使用Spring和JPA/Hibernate,我会拔下我的头发。 这是我的: 谢谢你的帮助。