将Doc属性作为参数传递给Mongodb上的函数

时间:2015-08-06 21:08:13

标签: javascript node.js mongodb

我使用mongodb js脚本文件定义了以下函数:

function populateNewCollection(db, col_new, col_old, daysBack, dateAttribute) { 
    db[col_old].find(     
        { dateAttribute : {$gte: new Date("09/01/2014")}}   
        ).sort({_id: -1}).forEach(     
        function(row) { db[col_new].insert(row); }   ); }

我正在调用函数:

populateNewCollection(db.getSiblingDB('tracking'),'TRACKING_DATA','TRACKING_DATA.old',1, 'datecreated' )

由于某种原因,这无声地失败,但如果我硬编码dateAttribute param,它就会如此:

    function populateNewCollection(db, col_new, col_old, daysBack, dateAttribute) { 
        db[col_old].find(     
            { 'datecreated' : {$gte: new Date("09/01/2014")}}   
            ).sort({_id: -1}).forEach(     
            function(row) { db[col_new].insert(row); }   ); }

我不确定我需要在这里做什么我主要是一个java开发人员,所以我认为传递字符串会起作用。我是否需要在方法中进行一些后期处理,以便这是一个mongo doc属性?

编辑:

我甚至尝试将其声明为函数中的var并且仍然无法正常工作:

 function populateNewCollection(db, col_new, col_old, daysBack, dateAttribute) { 
var date = new Date(); 
date.setDate(date.getDate() - daysBack); 
var dateAt = dateAttribute;
var  d = 'datecreated'; 
db[col_old].find(     
    { d : {$gte: new Date("09/01/2014")}}   
    ).sort({_id: -1}).forEach(     
    function(row) { db[col_new].insert(row); }   ); }

1 个答案:

答案 0 :(得分:1)

var query= {};

query["datecreated"] = {"$gte":new Date("09/01/2014")}

并且在find方法中,您可以传递查询对象。