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

时间:2019-01-05 01:34:12

标签: mongodb mongodb-query

如何添加第二个参数{engine:1,_id:0}到findOne,仅返回引擎数组{make:“ Acrua”,型号:“ CL”,year:“ 1997”}}。此集合中的所有文档都是唯一的。我应该使用find而不是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 个答案:

答案 0 :(得分:0)

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

  

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

var myDocument = db.bios.findOne();

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

   print (tojson(myName));
}
     

指定要返回的字段
  以下操作查找文档   在BIOS集合中,仅返回名称,贡献和_id   字段:

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

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

答案 1 :(得分:0)

由于某些原因,您的参数可能未定义,因此您必须将其显式设置为UserFeed。 仅将引擎投影为<UserFeed feedData = {this.state.data} deleteFeed = {() => this.deleteFeed(this.state.data.iterationid)} convertTime={this.convertTime} name={this.state.name}/> 只能投影引擎字段。因此您可以轻松返回null(如果存在)。

{_id:0, engine:1}