我有一个MongoDB集合,其中特定字符串可能出现在以下任何一个字段中:
{"_id":1, "field1":"foo","field2":"bar","field3":"baz", "otherfield":"stuff"},
{"_id":2, "field1": "bar", "field2": "baz", "field3": "foo", "otherfield":"morestuff"},
{"_id":3, "field1": "baz", "field2": "foo", "field3": "bar", "otherfield":"you get the idea"}
Run Code Online (Sandbox Code Playgroud)
我需要查询,以便返回所有记录,其中一组字段中的任何一个等于数组中的任何值...基本上,如果我有,["foo","bar"]我需要它匹配,如果这些字符串中的任何一个在field1或field2 (但不是任何其他领域).
显然,我可以通过一系列多个查询来做到这一点
db.collection.find({"field1":{"$in":["foo","bar"]}})
db.collection.find({"field2":{"$in":["foo","bar"]}})
我已经制作了一个非常大的$或查询将它们连接在一起,但它似乎效率太低(我的实际集合需要匹配9个字段中任何一个中可能出现的15个字符串中的任何一个)...但我仍然是nosql数据库的新手,我不确定我需要在这里使用的最佳范例.任何帮助是极大的赞赏.
我使用的是YouTube API,并尝试获取用户的YouTube链接.唯一显示的是Google+链接,称为链接字段.无论如何从Google帐户信息中获取用户的Youtube信息?
Google Response具有first_name,given_name和json响应中的链接.
谢谢!
我已经定义了两个AngularJS服务...一个用于YouTube播放器API,另一个用于YouTube iFrame数据API.它们看起来像这样:
angular.module('myApp.services',[]).run(function() {
var tag = document.createElement('script');
tag.src = "//www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
})
.factory('YtPlayerApi', ['$window', '$rootScope', function ($window, $rootScope) {
var ytplayer = {"playerId":null,
"playerObj":null,
"videoId":null,
"height":390,
"width":640};
$window.onYouTubeIframeAPIReady = function () {
$rootScope.$broadcast('loadedApi');
};
ytplayer.setPlayerId = function(elemId) {
this.playerId=elemId;
};
ytplayer.loadPlayer = function () {
this.playerObj = new YT.Player(this.playerId, {
height: this.height,
width: this.width,
videoId: this.videoId
});
};
return ytplayer;
}])
.factory('YtDataApi', ['appConfig','$http', function(cfg,$http){
var _params = {
key: cfg.youtubeKey
};
var api="https://www.googleapis.com/youtube/v3/";
var …Run Code Online (Sandbox Code Playgroud)