如何仅在屏幕打印MongoDB中插入的条目?
如何仅打印MongoDB插入的条目内容而非完整CommandResult?
我用这段Node.js代码往MongoDB插入数据:
var mongo = require('mongodb'); //Establishing the connection var new_db = "mongodb://localhost:27017/demo_db" //File Name is : demo-db.js //establishing the connection mongo.connect(new_db ,(error , client) => { if (error){ throw error; } var db = client.db('mytestdb'); //console.log("Database demo_db created successfully"); //To close the connection var data ={ name : "name" , age : "age" , nation : "VN" } db.collection("details").insertOne(data,(err , coll) => { if(err) throw err; console.log(coll); }); client.close(); });
执行后,console.log(coll)打印出来的是一堆冗余的CommandResult JSON对象,我只想要看到插入的name、age、nation这些内容,该怎么改?
你只需要访问CommandResult对象里的ops属性就可以拿到插入的文档啦!insertOne返回的结果对象中,ops是一个数组,里面包含了刚刚插入的完整文档(还会带上MongoDB自动生成的_id字段)。
修改你的代码里的console.log部分就行:
db.collection("details").insertOne(data,(err , coll) => { if(err) throw err; // 打印插入的第一个(也是唯一一个)文档 console.log(coll.ops[0]); });
这样就能直接输出你插入的条目内容,比如:
{ name: 'name', age: 'age', nation: 'VN', _id: ObjectId("xxxxxx") }
另外还有个小提醒:你现在的client.close()放在了insertOne的回调外面,这可能会导致连接在插入操作完成前就被关闭,最好把client.close()移到回调函数里面,确保操作完成后再关闭连接:
db.collection("details").insertOne(data,(err , coll) => { if(err) throw err; console.log(coll.ops[0]); client.close(); // 移到这里 });
这样就不会出现潜在的异步问题啦!
内容的提问来源于stack exchange,提问作者Anh Tú Mai
相关产品推荐
相关产品推荐

