Как достичь ниже SQL в MongoShell?MongoDB выбрать все где значение поля в списке запросов
Select TableA.* from TableA where TableA.FieldB in (select TableB.FieldValue from TableB)
Монго документ дает некоторый пример
db.inventory.find({ qty: { $in: [ 5, 15 ] } })
Я хочу, чтобы этот массив динамически из другого запроса. Является ли это возможным?
Продление моего вопрос
У меня есть коллекция bot
имен
боты коллекции
{
"_id" : ObjectId("53266697c294991f57c36e42"),
"name" : "teoma"
}
У меня есть коллекция пользовательского трафика, в этой коллекции трафика, у меня есть a Поле useragent
userTraffic Коллекция
{
"_id" : ObjectId("5325ee6efb91c0161cbe7b2c"),
"hosttype" : "http",
"useragent" : "Mediapartners-Google",
"is_crawler" : false,
"City" : "Mountain View",
"State" : "CA",
"Country" : "United States"
}
Я хочу, чтобы выбрать все документы трафика пользователя, где его useragent
содержит любое имя bot
коллекции
Это то, что я пришел с
var botArray = db.bots.find({},{name:1, _id:0}).toArray()
db.Sessions.find({
useragent: {$in: botArray}
},{
ipaddress:1
})
Здесь я считаю, что это делает равно сравнению, но я хочу это сделать как сравнение %%
После того, как я получаю результат, я хочу сделать обновление для этого набора результатов в виде is_crawler = истина
Пытались что-то подобное, не полезно
db.bots.find().forEach(function(myBot) {
db.Sessions.find({
useragent: /myBot.name/
},{
ipaddress:1
})
});
Другой способ прокрутки записей, но совпадения не найдено.
var bots = db.bots.find({
$query: {},
$orderby:{
name:1}
});
while(bots.hasNext()) {
var bot = bots.next();
//print(bot.name);
var botName = bot.name.toLowerCase();
print(botName);
db.Sessions.find({
useragent: /botName/,
is_crawler:false
},{
start_date:1,
ipaddress:1,
useragent:1,
City:1,
State:1,
Country:1,
is_crawler:1,
_id:0
})
}
Как добиться же с подобным заявлением «Newfield»: { «$ как»: * список *} – HaBo
Extended мой вопрос, увидеть, если это имеет смысл в Монго моделирования – HaBo