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

Passing Doc attribute as a parameter into function on Mongodb

本文关键字:Mongodb 函数 参数传递 Doc 属性      更新时间:2023-09-26

我用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参数,它的工作方式如下:

    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); }   ); }
var query= {};

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

在find方法中可以传递查询对象。