如何将INSERT INTO ... SELECT转换为MongoDB

时间:2011-05-29 02:31:46

标签: mongodb

我想知道MongoDB中这个MySQL命令的等价物。

INSERT INTO xyz (field1, field2, field3, field4)
SELECT t1.id, t2.id, t3.id, NOW() FROM t1, t2, t3

我一直使用MongoDB只有48小时,我担心我无法想出那个。

感谢所有事情:)。

1 个答案:

答案 0 :(得分:1)

MongoDB不进行连接,因此您的前三个步骤是:

  1. 从MongoDB中抓取t1.id并将其放入t1_id
  2. 从MongoDB中抓取t2.id并将其放入t2_id
  3. 从MongoDB中抓取t3.id并将其放入t3_id
  4. 然后,您可以使用new Timestamp()代替NOW()

    db.xyz.insert({
        field1: t1_id,
        field2: t2_id,
        field3: t3_id,
        field4: new Timestamp()
    });
    

    如果你真的在做三向交叉产品,那么你必须将上面的内容包装在一个三层嵌套循环中,如下所示:

    for(var i = 0; i < all_t1_ids.length; ++i) {
        for(var j = 0; j < all_t2_ids.length; ++j) {
            for(var k = 0; k < all_t3_ids.length; ++k) {
                db.xyz.insert({
                    field1: all_t1_ids[i],
                    field2: all_t2_ids[j],
                    field3: all_t3_ids[k],
                    field4: new Timestamp()
                });
             }
         }
    }
    

    您必须手动使用MongoDB执行许多传统的RDBMS。