Node / Mongo:如何正确插入变量以使查询有效?

时间:2017-05-29 11:09:10

标签: node.js mongodb

我通过Node.js在mongoDB中插入输入(错误或正确插入)这些输入存储在变量中。这就是我所拥有的

collection.insert({
                        "fields": 
                            {
                                "fname": [stackErrors]

                              },
                        }), (etc)

find()查询的输出是:

{
"_id" : ObjectId("592bfb979b047027983a7283"),
"fields" : {
    "fname" : [
        {
            "message" : "expected '' to be NaN",
            "showDiff" : false,
            "actual" : "",
            "expected" : null,
            "name" : "AssertionError"
        }
    ]

但我猜我插错了,因为我无法进行有效的查询来查找例如断言错误,这是我的目标。我想用propper查询找到断言错误或fname字段的输入等。任何人都可以帮忙吗?感谢

编辑:

感谢您的回复,但也许我还不清楚。我需要查询每个表单字段,我想每个字段必须是一个对象?这是整个功能:

function saveToMongo(stackErrors) {

       //CONNECTION

        MongoClient.connect(url, function (err, db) {
            assert.equal(null, err);
            console.log("Connected correctly to server");

            insertDocuments(db, function () {
                db.close();
            });

        });

        //INSERT

        var insertDocuments = function (db, callback) {

            var collection = db.collection('http_methods');
            collection.insert({
                "fields": {
                    "fname": [stackErrors],
                    "surname": [stackErrors],

                },

            }),
                function (err, result) {
                    assert.equal(err, null);
                    callback(result);
                };

        }

    }

})

像这样,所有字段都是一个对象。如果我想删除键“name”及其值,则会将其从所有字段中删除。那么,什么是更好的解决方案?我需要这样的东西吗?

var collection = db.collection('http_methods');
                collection.insert({
                    "fields": {
                        "fname": [stackErrors]
                    },
                    "fields": {
                         "surname": [stackErrors]
                        },

2 个答案:

答案 0 :(得分:0)

首先应使用以下命令安装assert包。

npm install assert

插入数据的代码如下:

var assert=require("assert");
var mongo=require("mongodb").MongoClient;
var url=//the url for accessing collection goes here.
mongo.connect(url,function(err,db){
assert.equal(null,err)
db.collection("<collection-name>").insert({"fields":{"fname":{$push:"stackErrors"}}});
});

答案 1 :(得分:0)

如果仅使用mongodb,请参阅以下代码

var db = require('./../db.js');
var ObjectId = db.getObjectID();
module.exports = {
  addUser: function (data, cb) {
   var data = {"fields": {"fname": [stackErrors]}};
    var collection = db.getDb().collection('users');
    collection.insertOne(data, function (err, result) {
        if (err) {
           console.log(err);
        } else {
           cb(err, result);
        }
     });
  });
},