Как перевести INSERT INTO ... SELECT в MongoDB - PullRequest
0 голосов
/ 29 мая 2011

Я хотел бы знать, что эквивалентно этой команде MySQL в MongoDB.

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

Я пользуюсь MongoDB всего 48 часов, и боюсь, что просто не могу понять это.

Спасибо за все :).

1 Ответ

1 голос
/ 29 мая 2011

MongoDB не делает объединений, поэтому ваши первые три шага:

  1. Захват t1.id из MongoDB и поместите его в t1_id.
  2. Захват t2.id изMongoDB и поместите его в t2_id.
  3. Grab t3.id из MongoDB и поместите его в t3_id.

Затем вы можете использовать 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 приходится выполнять множество традиционных СУБД вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...